Java 我的android项目总是在我选择日期时崩溃/强制关闭
当我选择某个日期时,我的android项目会崩溃/强制关闭 这是我的xml代码: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&
<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);