如何将数据发送到 AlertDialog

Mar*_*e F 2 android android-fragments android-dialog

我想将一些数据发送到替代对话框,以了解在我的游戏中识别获胜者。

这是我的 MainActivity.java 中的代码:

if (game.comprobarCuatro(Game.JUGADOR)) {
            dibujarTablero();
            resultadoTextView.setText(R.string.gana_humano);
            new AlertDialogFragment().show(getFragmentManager(),"ALERT DIALOG");

            return;
        }
Run Code Online (Sandbox Code Playgroud)

这是我在 AlertDialogFragment.java 中的代码,我想根据收到的输入在其中显示不同的标题。

public class AlertDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final MainActivity main = (MainActivity) getActivity();

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                getActivity());
        alertDialogBuilder.setTitle(R.string.fin_del_juego);
        alertDialogBuilder.setMessage(R.string.fin_message);
        alertDialogBuilder.setPositiveButton("Si",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        main.game.restart();
                        main.dibujarTablero();
                        dialog.dismiss();
                    }
                });
        alertDialogBuilder.setNegativeButton("No",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        main.finish();
                        dialog.dismiss();
                    }
                });
        return alertDialogBuilder.create();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将该信息发送到对话框以每次在标题中显示不同的消息?是否可以将信息发送到警报对话框?

做一些研究有人建议将其保存在首选项中并稍后阅读,我认为这不是一个好的解决方案。

谢谢!

M D*_*M D 5

这很容易。喜欢从Activity喜欢打电话

AlertDialogFragment dFragment = new AlertDialogFragment ().newInstance("your Message");
dFragment.show(getSupportFragmentManager(), "Frag");
Run Code Online (Sandbox Code Playgroud)

现在在你AlertDialogFragment喜欢

 public static AlertDialogFragment newInstance(String msg) {
      AlertDialogFragment fragment = new AlertDialogFragment();

        Bundle bundle = new Bundle();
        bundle.putString("msg", msg);
        fragment.setArguments(bundle);

        return fragment;
    }
Run Code Online (Sandbox Code Playgroud)

然后得到这个msgonCreateDialog(..)类似

 String msg= getArguments().getString("msg");
Run Code Online (Sandbox Code Playgroud)

代码:

public class AlertDialogFragment extends DialogFragment {

  public static AlertDialogFragment newInstance(String msg) {
      AlertDialogFragment fragment = new AlertDialogFragment();

        Bundle bundle = new Bundle();
        bundle.putString("msg", msg); // set msg here
        fragment.setArguments(bundle);

        return fragment;
    }

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final MainActivity main = (MainActivity) getActivity();

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            getActivity());
    alertDialogBuilder.setTitle(R.string.fin_del_juego);
    alertDialogBuilder.setMessage(getArguments().getString("msg"));//get Mesg here
    alertDialogBuilder.setPositiveButton("Si",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    main.game.restart();
                    main.dibujarTablero();
                    dialog.dismiss();
                }
            });
    alertDialogBuilder.setNegativeButton("No",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    main.finish();
                    dialog.dismiss();
                }
            });
    return alertDialogBuilder.create();
}
}
Run Code Online (Sandbox Code Playgroud)