为什么打开对话框时出现此错误?

时间:2020-07-24 10:45:28

标签: java android android-studio dialog

我正在尝试打开一个对话框,但是会产生此错误

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Configuration android.content.res.Resources.getConfiguration()' on a null object reference
    at android.app.ActivityThread.updateLocaleListFromAppContext(ActivityThread.java:6206)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6446)
    at android.app.ActivityThread.access$1300(ActivityThread.java:231)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7478)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)

我已经尝试过android.content.res.Resources.getConfiguration()' on a null object reference中的解决方案,但是它不起作用,并且错误仍然出现。

这是我的代码:

TodoListTimeDialog dialog = new TodoListTimeDialog(getApplicationContext());
    TodoListTimeDialog.Builder mBuilder = new TodoListTimeDialog.Builder(getApplicationContext());
    dialog.show();

    final EditText input = dialog.getView().findViewById(R.id.userInput);
    Button confirm = dialog.getView().findViewById(R.id.dialog_confirm);

    confirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timeLeftInMilliSeconds = Long.parseLong((input.getText().toString())) * 60000;
        }
    });

对话框类:

public class TodoListTimeDialog {
private Context context;
private OnTodoListTimeDialogListener mListener;
private android.app.AlertDialog alert;

View v;

public TodoListTimeDialog(Context context) {
    this.context = context;
    buildPlan();
}

private void buildPlan() {
    View dialogView = View.inflate(context, R.layout.todolist_time_dialog, null);
    setView(dialogView);

    Button cancel = dialogView.findViewById(R.id.dialog_back);
    cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            alert.dismiss();
        }
    });

    // Initialize and build the AlertBuilderDialog
    android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context)
            .setView(dialogView);
    alert = builder.create();
    if (alert.getWindow() != null)
        alert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}

public void show() {
    alert.show();
}

private void setView(View view) {
    v = view;
}

0 个答案:

没有答案