我知道如何使用待定意图启动单击窗口小部件按钮的活动,但我想启动该活动的特定方法。
答案 0 :(得分:6)
如果您需要在其他活动中调用某个方法,那么您的设计错误。您不应该仅将所有代码都放在活动中。
为什么选择不好 -
因为您需要类的对象来调用它的方法。你怎么会得到活动的对象?除非你将一个活动的对象存储到另一个活动中(这是一件非常混乱的事情)。这种方法的另一个问题是你的其他活动可能已经被破坏了,所以如果你依赖于另一个活动的某些UI元素,那么你根本就没有任何帮助。使活动保持静止将为您打开一大堆蠕虫。
那么可用的选项是什么 -
有很多可用于进行交互活动方法调用的选项,但我依赖于Singletons。它们是只能有一个对象的类,这些对象将被静态访问,因此您不必存储类的对象,因为类本身存储对象。它可以如下所示 -
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名单身经理来处理不同的任务。
答案 1 :(得分:3)
您需要在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();
}
}