グローバル変数int xを持つアクティビティがありますが、フラグメントはそのアクティビティの変数xの現在の値をどのように取得できますか?
変数をpublic static
として設定するか、または
((MyActivity)getActivity()).getX()
パブリック静的変数を使用することは、アクティビティとフラグメント間で通信するための最良の方法ではありません。他の方法については、 この回答 をご覧ください。
Androidドキュメント は、フラグメントがアクティビティと通信する場合にインターフェースを使用することを推奨しています。そして、アクティビティがフラグメントと通信したい場合、アクティビティはフラグメントへの参照を取得し( findFragmentById を使用)、フラグメントのパブリックメソッドを呼び出します。
これは、フラグメントがそのアクティビティから切り離されるようにするためです。フラグメントはどのアクティビティでも再利用できます。フラグメント内から親アクティビティまたはそのグローバル変数の1つに直接アクセスすると、別のアクティビティでそのフラグメントを使用できなくなります。
Kotlinバージョン:
(activity as MyActivity).x
***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);