Android:使用DialogFragment作为自定义对话框的容器是或否?

时间:2014-02-24 13:40:21

标签: java android dialog android-activity android-dialogfragment

好的,这是我关于SO的第一个问题,我想知道,如果真的有必要使用DialogFragment作为我的活动中的简单自定义对话框的容器。

这是我的代码:

public class MainActivity extends Activity
{
    // VARS:
    private Button buttonShowDialog;
    private Dialog dialogSimple;
    private Button buttonOK;
    private Button buttonCancel;

    // ONCREATE:
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_main);
        buttonShowDialog = (Button) findViewById(R.id.button_showdialog);
        buttonShowDialog.setOnClickListener(new OnClickListener)
        {
            @Override
            public void onClick(View view) 
            {
                if (dialogSimple != null)
                {
                    dialogSimple.show();
                }
                else
                {
                    showDialog();
                }
            }
        });
    }

    // SHOW DIALOG:
    private void showDialog()
    {
        dialogSimple = new Dialog(MainActivity.this);
        dialogSimple.setContentView(R.layout.dialog);
        buttonOK = (Button) dialogSimple.findViewById(R.id.button_ok);
        buttonCanel = (Button) dialogSimple.findViewById(R.id.button_cancel);

        buttonOK.setOnClickListener(new OnClickListener)
        {
            @Override
            public void onClick(View view) 
            {
                doSomeStuff();
            }
        });

        buttonCanel.setOnClickListener(new OnClickListener)
        {
            @Override
            public void onClick(View view) 
            {
                dialogSimple.dismiss();
            }
        });

        dialogSimple.show();
    }
}

我的活动清单条目:

android:configChanges="orientation|keyboardHidden|keyboard|screenSize"

我测试过,它运行良好:     API 8(设备),         9(设备),         10(鸸)),         11(鸸)),         16(鸸)),         17(设备),         18(设备)     和19(鸸)

所以我担心,通过这个程序,我的应用程序可能在某些设备上行为不端,因为Dialog不在DialogFragment中。

我的问题

  1. 我的担心是否正确?
  2. 如果是,我想知道使用此程序在我的应用程序中会发生什么样的不良事件?
  3. 也许有一些示例代码可以干净而简短的方式做到这一点?

2 个答案:

答案 0 :(得分:0)

不,不是必需的。只需recommended

但你可以通过警告对话框来实现它:

 AlertDialog.Builder bld = new AlertDialog.Builder();
 bld.setMessage(...);
 bld.setPositiveButton(...);
 bld.setNegativeButton(...);
 bld.create().show();

答案 1 :(得分:0)

Dialog类是用于显示对话框的基类。您应该使用更具体的子类来显示“是/否”对话框。例如:AlertDialog。

    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
    builder.setMessage(R.string.dialog_fire_missiles)
           .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // FIRE ZE MISSILES!
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
               }
           });
    // Create the AlertDialog object and show it
    builder.create().show();

您可以找到更多详情here