如何从另一个活动中调用 MainActivity 中的方法
有时你不能将方法设为静态,因为它依赖于 MainActivity 中的所有其他状态。将所有依赖状态设为静态无异于将所有内容都设为全局,这不是一个好主意。
想要在 MainActivity 上调用非静态方法也没有错——就像一个类调用另一个类一样。
这是你要做的:
您的应用程序在您的所有活动中共享(前提是它们都在同一个进程中)。此应用程序可用于存储状态。尽管一个明智的想法是存储您的活动实例并让它们存储各自的状态,这就是我们要做的。
创建您自己的应用程序子类:
public class MyApplication extends Application
{
MainActivity mainActivity;
}
调整清单:
<application
android:name=".MyApplication"
...
在 MainApplication 初始化MyApplication.mainActivity
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MyApplication ma = (MyApplication)getApplication();
ma.mainActivity = this;
...
在OtherActivity
检索 MainActivity 实例。
private MainActivity mainActivity;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MyApplication ma = (MyApplication)getApplication();
mainActivity = ma.mainActivity;
...
- 利用 mainActivity 实例调用方法:
mainActivity.someMethodOnMainActivtiy();