私はこれを数時間にわたって頭の中に入れようとしています。メインアクティビティに戻り値を返すためのダイアログを開始
メインのFragmentクラスがあり、そのクラスのImageViewから設定したonClickから、単純な「Yes」または「Cancel」オプションを使用してダイアログフラグメントを開始しています。
ユーザーが「OK」をクリックすると、結果コードがメインのフラグメントに送信され、コードを実行するようになります(私の場合は壁紙を設定しています)。
この音はシンプルですが、わかりにくいようです。前もって感謝します。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.image_detail_fragment,
container, false);
mImageView = (RecyclingImageView) v.findViewById(R.id.imageView);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
MyDialogFragment dialog = new MyDialogFragment();
dialog.show(getActivity().getFragmentManager(),
"MyDialogFragment");
}
public void onDialogOKPressed() {
((ImageDetailFragment) (DialogFragment.this.getParentFragment()))
.onDialogOKPressed();
dismiss();
}
});
return v;
}
ダイアログクラス::私は何とかに戻って結果を取得したいと思い
にOnclickあなたの活動に
class MyDialogFragment extends DialogFragment {
private Button ButtonOk;
private Button ButtonCancel;
public MyDialogFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.prompt, container);
ButtonOk = (Button) view.findViewById(R.id.button1);
ButtonCancel = (Button) view.findViewById(R.id.button2);
getDialog().setTitle("Set Wallpaper?");
ButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
((MyDialogFragment)(DialogFragment.this.getActivity())).onDialogOKPressed();
dismiss();
}
});
ButtonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MyDialogFragment.this.dismiss();
}
});
return view;
}
}
次に、主なアクティビティが自分のコードを実行するかどうかを知るために、結果を戻す方法はありますか?それは私の質問だった:) – Jack
これはちょうどあなたの活動であなたの新しいメソッドを呼び出します。したがって、この新しいメソッドからコードを実行してください。 OKボタンが押されていないと呼び出されません。結果コードでif/elseブロックを取り除く。あなたは壁紙を設定するように見えるので、新しい方法で、あなたの壁紙を設定します。 – Tenfour04
また、新しいメソッドをフラグメントに置き、 '((MyActivity)getActivity())'を '((MyFragment)getParentFragment()) 'に置き換えることもできます。 – Tenfour04