显示AlertDialog Android

时间:2018-07-12 20:52:56

标签: android alertdialog

我正在尝试使用android显示一个简单的对话框,但是在启动时崩溃。

MainActivity.java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MessageDialog messageDialog = new MessageDialog();
        Dialog dialog = messageDialog.onCreateDialog(savedInstanceState);
        dialog.show();
    }
}

MessageDialog.java:

public class MessageDialog extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        FragmentActivity activity = getActivity();
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setMessage("Hello World").setPositiveButton("0K", null);

        return builder.create();
    }
}

错误:

  

E / Android运行时:致命异常:主要                     流程:com.example。*****。*****,PID:7458                     java.lang.RuntimeException:无法启动活动ComponentInfo {com.example。*****。***** / com.example。*****。*****。MainActivity}:   java.lang.NullPointerException:尝试调用虚拟方法   'android.content.res.Resources $ Theme   空对象引用上的android.content.Context.getTheme()'                         在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)                         在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)                         在android.app.ActivityThread.-wrap14(ActivityThread.java)                         在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1635)                         在android.os.Handler.dispatchMessage(Handler.java:102)

1 个答案:

答案 0 :(得分:1)

为什么要调用“ onCreateDialog”?

使用以下代码显示对话框片段:

MessageDialog dialog = new MessageDialog();
dialog.show(getSupportFragmentManager(), "fragment_name");

(第二个参数是片段的标签。以后可以通过“ FragmentManager#findFragmentByTag”将其用于获取片段。)