【问题标题】:How to send data to an AlertDialog [duplicate]如何将数据发送到 AlertDialog [重复]
【发布时间】:2015-03-25 11:09:19
【问题描述】:

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

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

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

            return;
        }

这是我在 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();
    }
}

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

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

谢谢!

【问题讨论】:

  • 使用 DialogFragment 方法的 setArguments() 和 getArguments()

标签: android android-fragments android-dialog


【解决方案1】:

这很容易。喜欢来自Activity的电话喜欢

AlertDialogFragment dFragment = new AlertDialogFragment ().newInstance("your Message");
dFragment.show(getSupportFragmentManager(), "Frag");

现在在你的AlertDialogFragment 中点赞

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

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

        return fragment;
    }

然后在onCreateDialog(..) 中得到这个msg 喜欢

 String msg= getArguments().getString("msg");

代码:

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();
}
}

【讨论】:

  • 您编写了一个静态 newInstance 方法。为什么要使用 new Fragment() 对象访问它? AlertDialogFragment dFragment = AlertDialogFragment.newInstance("你的消息"); dFragment.show(getSupportFragmentManager(), "Frag");是正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多