如何通过点击一个小部件按钮来调用另一个活动中定义的'方法'?

问题描述:

我知道如何使用挂起的意图启动点击小部件按钮的活动,但我想启动该活动的特定方法。如何通过点击一个小部件按钮来调用另一个活动中定义的'方法'?

+1

使其成为静态或重新设计您的模型 – biegleux 2014-10-17 12:10:52

+1

将特定方法移到其他类中,而不是调用另一个活动方法。 – 2014-10-17 12:11:44

+0

@biegleux,我没有时间重新设计,它将在2天内提交。 – ABcDexter 2014-10-17 12:17:38

如果您需要在另一个活动中调用某个方法,那么您正在执行错误的设计。你不应该把所有的代码放在活动中。

为什么它是一个不错的选择 -
因为你需要的类的对象调用一个方法就可以了。你将如何获得这项活动的一个对象?除非你将一个活动的对象存储到另一个活动中(这是一个相当混乱的事情)。这种方法的另一个问题是你的其他活动可能已经被破坏,所以如果你依赖于其他活动的一些UI元素,那么你根本得不到任何帮助。让活动静态化将为你打开一大堆蠕虫。

那么什么是可用的选项 -
是有很多可供选择做活动间的方法调用,但我靠Singletons.They是可以有哪些是静态只能访问一个对象类,所以你不必在任何地方存储类的对象,因为类本身存储对象。它可以去像下面 -

public class AppManager{ 
    private static AppManager _instance = null; 
    public static AppManager getInstance(){ 
    if(_instance == null) 
     _instance= new AppManager(); 
    return _instance; 
    } 
    private AppManager(){} //Making the constructor private, so no 2 object can be created 
    public void someMethod(){} 
} 

因此,为了从任何地方someMethod()在你的项目中你只需要调用

AppManager.getInstance().someMethod(); 

所以做你的计算在里面。您可以将当前活动的对象存储在Manager类中,也可以将功能完全从Activity中抽象出来,并且可以更好地控制代码。当然,你可以有一个以上的单身课程。我通常在我的项目中有几乎6-7个Singleton管理员来处理不同的任务。

您需要在2个不同的活动中使用相同的方法。 所以,最好是使用该方法获得另一个类,然后在这两个活动中调用该方法。

public class A extends Activity 
{ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

    }  

    B.method() 
} 

public class B { 

    public static void method() 
    { 

    } 

} 

public class C extends Activity 
{ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     B.method(); 

    } 
} 
+0

好的,我会检查并通知您。谢谢。 – ABcDexter 2014-10-17 12:33:19