引数をカスタムダイアログのフラグメントに渡す必要がある場合は、実際に使用する前にそれをバンドルする必要があります。ダイアログフラグメントにデータを渡す方法
例:
class MyDFrag extends DialogFragment{
//Empty Construct
public MyDFrag(){}
public static MyDFrag newInstance(){
MyDFrag fragment = new MyDFrag();
args = new Bundle();
fragment.setArgument(args);
}
}
これは、ほとんどのパスのための素晴らしい作品ができますが、実際には、ダイアログの断片を表示する前にこの引数を渡す場合にのみ。
私の問題は、ダイアログにテキストビューがあり、ダイアログが現在表示されている間に親アクティビティで何かが起きたときにその値を変更したいということです。
ダイアログを表示した後に引数を渡しても、この変更は反映されません。私のonCreateで
:ダイアログクラスで
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
textbox = (TextView) view.findViewById(R.id.textish);
if(args.containsKey("status")){
textbox.setText(getArguments().getString("status"));
}
}
は、私はその後、いくつかの点で私のメインの活動に呼び出すのTextViewの値を設定し、公開ダイアログを持っています。私は私の主な活動の準備ができていたとき、私は、ダイアログを表示する前にいないその上映しながらコードを実行した場合
public void setStatus(String value){
args.putString("status", value);
}
だから、私はこの作品だけ
dialog.setStatus("ok");
を呼び出します。これを達成する方法はありますか?
提案が、私はこれを行うには、いくつかの方法があると信じて感謝
提案みんなのおかげで、彼らはMainFragmentからブロードキャストを送信し、ダイアログでそれを受け取るために、すべての有用 – Tajinere
使用LocalBroadcastManager https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html をWHERE断片 –