別のアクティビティからMainActivityのメソッドを呼び出す方法解決済み
MainActivityの他のすべての状態に依存するため、メソッドを静的にできない場合があります。すべての依存状態を静的にすることは、すべてをグローバルにすることと同じであり、これは良い考えではありません。
また、MainActivityで非静的メソッドを呼び出したい場合も問題はありません。これは、あるクラスが別のクラスを呼び出すのと同じです。
これがあなたがすることです:
アプリケーションはすべてのアクティビティで共有されます(すべて同じプロセスにある場合)。このアプリケーションは、状態を保存するために使用できます。賢明なアイデアは、あなたの活動のインスタンスを保存し、それぞれの状態を保存させることですが、これが私たちがやろうとしていることです。
独自のApplicationサブクラスを作成します。
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();