如何通过点击一个小部件按钮来调用另一个活动中定义的'方法'?
如果您需要在另一个活动中调用某个方法,那么您正在执行错误的设计。你不应该把所有的代码放在活动中。
为什么它是一个不错的选择 -
因为你需要的类的对象调用一个方法就可以了。你将如何获得这项活动的一个对象?除非你将一个活动的对象存储到另一个活动中(这是一个相当混乱的事情)。这种方法的另一个问题是你的其他活动可能已经被破坏,所以如果你依赖于其他活动的一些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();
}
}
好的,我会检查并通知您。谢谢。 – ABcDexter 2014-10-17 12:33:19
使其成为静态或重新设计您的模型 – biegleux 2014-10-17 12:10:52
将特定方法移到其他类中,而不是调用另一个活动方法。 – 2014-10-17 12:11:44
@biegleux,我没有时间重新设计,它将在2天内提交。 – ABcDexter 2014-10-17 12:17:38