2つのクラスがあります。1つ目はアクティビティ、2つ目はフラグメントで、EditText
というテキストがあります。アクティビティには、async-taskを持つサブクラスがあり、メソッドdoInBackground
で結果を得て、それを変数に保存しています。この変数をサブクラス"my activity"からこのフラグメントに送るにはどうしたらいいでしょうか?
アクティビティからは、意図してデータを送信します。
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
と、FragmentのonCreateViewメソッドで送信しています。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
return inflater.inflate(R.layout.fragment, container, false);
}
私はここ@stackoverflow.comで多くの答えを見つけましたが、間違いなくこれが正しい答えです。
アクティビティ:。
Bundle bundle = new Bundle();
String myMessage = "Stackoverflow is cool!";
bundle.putString("message", myMessage );
FragmentClass fragInfo = new FragmentClass();
fragInfo.setArguments(bundle);
transaction.replace(R.id.fragment_single, fragInfo);
transaction.commit();
フラグメント:
フラグメントでの値の読み込み
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
または単に
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
具象サブクラスの)フラグメントへの参照を非同期タスクに渡しておけば、フラグメントに直接アクセスできるようになります。
フラグメントの参照を非同期タスクに渡す方法はいくつかあります。
class FooTask extends AsyncTask
)の場合は、コンストラクタにフラグメントを渡します。