如何将数据发送到AlertDialog [英] How to send data to an AlertDialog

查看:90
本文介绍了如何将数据发送到AlertDialog的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想向Altert对话框发送一些数据,以便确定游戏中的赢家.

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

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

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

谢谢!

解决方案

非常简单.像来自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;
    }

,然后像

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

I'm want to send some data to an altert dialog, to know identify winner player in my game.

Here is the code in my MainActivity.java:

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

            return;
        }

And here is my code in AlertDialogFragment.java, where I want to display a different Tittle, according to the received input.

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

My question is, how do I send that information to the dialog to show in the title a different message each time? Is it possible to send information to an alert dialog?

Doing some research somebody suggested to use save it in the preferences and read it later, which I don't think is a good solution.

Thank you!

解决方案

It's very easy. like call from Activity like

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

Now in your AlertDialogFragment do like

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

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

        return fragment;
    }

and then get this msg in onCreateDialog(..) like

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

Code:

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

这篇关于如何将数据发送到AlertDialog的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆