37

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

4

4 に答える 4

95

varをpublic static、として設定するか、を使用します

((MyActivity)getActivity()).getX()
于 2012-09-11T07:05:28.620 に答える
18

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

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

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

于 2014-09-11T11:24:12.987 に答える
11

Kotlinバージョン

(activity as MyActivity).x
于 2018-06-19T11:27:25.383 に答える
4
***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);
于 2017-12-04T06:34:09.057 に答える