web-dev-qa-db-ja.com

Android:アクティビティのグローバル変数をフラグメント化する方法

グローバル変数int xを持つアクティビティがありますが、フラグメントはそのアクティビティの変数xの現在の値をどのように取得できますか?

30
esoni

変数をpublic staticとして設定するか、または

((MyActivity)getActivity()).getX()
92
Steelight

パブリック静的変数を使用することは、アクティビティとフラグメント間で通信するための最良の方法ではありません。他の方法については、 この回答 をご覧ください。

Androidドキュメント は、フラグメントがアクティビティと通信する場合にインターフェースを使用することを推奨しています。そして、アクティビティがフラグメントと通信したい場合、アクティビティはフラグメントへの参照を取得し( findFragmentById を使用)、フラグメントのパブリックメソッドを呼び出します。

これは、フラグメントがそのアクティビティから切り離されるようにするためです。フラグメントはどのアクティビティでも再利用できます。フラグメント内から親アクティビティまたはそのグローバル変数の1つに直接アクセスすると、別のアクティビティでそのフラグメントを使用できなくなります。

16
Suragch

Kotlinバージョン

(activity as MyActivity).x
7
Manohar Reddy
***In your Activity
==================
Bundle args = new Bundle();
args.putInt("something", Whatever you want to pass);
fragA.setArguments(args);

In your Fragment
==================
 Bundle args = getArguments();
//whatever you want to get ,get it here.
//for example integer given     
    int index = args.getInt("index", 0);
3
Kartheek