【问题标题】:Display AlertDialog Android显示警报对话框 Android
【发布时间】:2018-07-12 20:52:56
【问题描述】:

我正在尝试使用 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/AndroidRuntime: 致命异常: main 进程:com.example.*****.*****,PID:7458 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.*****.*****/com.example.*****.*****.MainActivity}: java.lang.NullPointerException:尝试调用虚拟方法 'android.content.res.Resources$主题 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)

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    为什么要调用“onCreateDialog”?

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

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

    (第二个参数是分片的标签,后面可以通过“FragmentManager#findFragmentByTag”获取分片。)

    【讨论】:

    • 因为我以为是这样的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多