Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的android项目总是在我选择日期时崩溃/强制关闭_Java_Android - Fatal编程技术网

Java 我的android项目总是在我选择日期时崩溃/强制关闭

Java 我的android项目总是在我选择日期时崩溃/强制关闭,java,android,Java,Android,当我选择某个日期时,我的android项目会崩溃/强制关闭 这是我的xml代码: <EditText android:id="@+id/tvDate" android:layout_width="174dp" android:layout_height="40dp" android:layout_marginTop="24dp" android:ems="10&

当我选择某个日期时,我的android项目会崩溃/强制关闭

这是我的xml代码:

<EditText
    android:id="@+id/tvDate"
    android:layout_width="174dp"
    android:layout_height="40dp"
    android:layout_marginTop="24dp"
    android:ems="10"
    android:inputType="date|time"
    app:layout_constraintEnd_toEndOf="@+id/cbr"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/cbr"
    app:layout_constraintTop_toBottomOf="@+id/cbr" />
这就是方法:

private void showDateDialog()
{
    Calendar newcalendar= Calendar.getInstance();
    DatePickerDialog datePickerDialog=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            tvDateRes.setText(dateFormatter.format(newDate.getTime()));
        }
    }, newcalendar.get(Calendar.YEAR), newcalendar.get(Calendar.MONTH), newcalendar.get(Calendar.DAY_OF_MONTH));
    datePickerDialog.show();
}
我不知道怎么说,但它总是说

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.EditText.setTextjava.lang.CharSequence” stacktrace:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.EditText.setTextjava.lang.CharSequence” 位于com.example.belajarlayout.InputUser$2.onDateSetInputUser.java:126 在android.app.DatePickerDialog.onClickDatePickerDialog.java:171 位于com.android.internal.app.AlertController$ButtonHandler.HandleMessageAllertController.java:172 在android.os.Handler.dispatchMessageHandler.java:106 在android.os.Looper.Looper.java:193 在android.app.ActivityThread.mainActivityThread.java:6739 在java.lang.reflect.Method.Invokenactive方法中 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.RuntimeInit.java:495 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:859

你们能帮帮我吗?

您没有在函数onCreate中设置setContentViewR.layout.xxx

代码应如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.xxx);


    nama=(EditText)findViewById(R.id.name);
    /*email=(Switch)findViewById(R.id.switch1);*/
    wsomething=(EditText)findViewById(R.id.wSome);
    btnSave=(Button)findViewById(R.id.btnsave);
    btnClear=(Button)findViewById(R.id.btnclear);
    btnChange=(Button)findViewById(R.id.btnImg);
    radLaki=(RadioButton)findViewById(R.id.rbl);
    radPerempuan=(RadioButton)findViewById(R.id.rbp);
    chbSekolah=(CheckBox)findViewById(R.id.cbs);
    chbRumah=(CheckBox)findViewById(R.id.cbr);
    tvDateRes=(EditText)findViewById(R.id.tvDate);
    btnPick=(Button)findViewById(R.id.btnTime);
    ivImage=(ImageView)findViewById(R.id.Img);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_input_user);
    Button btnTime = (Button)findViewById(R.id.btnTime);

    dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
    btnTime.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDateDialog();
        }
    });
}

在设置视图之前,将这两条线移动到

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_user);
另一方面,我建议您使用视图绑定以避免将来出现此类错误。另一件事是,您不需要再使用findViewById设置大小写。

在调用super.onCreatesavedInstanceState之前,您不能调用findViewById;和setContentViewR.layout.activity\u input\u user;您必须创建视图的对象。例如TextView等

所以重新排列你的密码

私有文本名; 私人编辑; 私人按钮btnSave; 私人按钮btnChange; //所有其他观点也。。。 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity\u input\u user; name=EditTextfindViewByIdR.id.name; /*email=switchfindviewbydr.id.switch1*/ wsomething=EditTextfindViewByIdR.id.wSome; btnSave=按钮findwiewbyidr.id.btnSave; btnClear=按钮findwiewbyidr.id.btnClear; btnChange=按钮findViewByIDR.id.btnImg; radLaki=RadioButtonfindViewByIdR.id.rbl; radPerempuan=RadioButtonfindViewByIdR.id.rbp; chbSekolah=checkboxfindviewbydr.id.cbs; chbRumah=checkboxfindviewbydr.id.cbr; tvDateRes=EditTextfindViewByIdR.id.tvDate; btnPick=buttonfindwiewbyidr.id.btnTime; ivImage=ImageViewfindViewByIdR.id.Img; Button btnTime=ButtonfindViewByIdR.id.btnTime; //然后试试你的密码。。。
好的,非常感谢。我没有意识到super和set内容在find FindViewByDok下。谢谢,我只是忘了把super和setcontentview放在oncreate函数的顶部,但我只是把它放在findViewById的下面。我不知道这是否真的很重要。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_user);