每当我启动 Activity 时,我的应用程序都会不断收到 NullPointerException
错误。这看起来很奇怪,因为一切都已声明。
这是我的 Activity :
package com.example.calendar;
import java.util.Date;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.EditText;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import com.example.calendar.Appointment;
public class CreateAppointment extends Activity implements OnClickListener{
EditText nameTextBox;
EditText timeTextBox;
EditText detailsTextBox;
Button createButton;
Date date = new Date();
Appointment getNewID;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create);
createButton = (Button) findViewById(R.id.apptSave);
nameTextBox = (EditText)findViewById(R.id.apptName);//Assign the global name box
timeTextBox = (EditText)findViewById(R.id.apptTime);//Assign the global time box
detailsTextBox = (EditText)findViewById(R.id.apptDetails);//Assign the global details box
createButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.apptSave:
String getNewDate = date.toString();
String getNewTitle = nameTextBox.getText().toString();
String getNewTime = timeTextBox.getText().toString();
String getNewDetails = detailsTextBox.getText().toString();
DBHandler db = new DBHandler(this);
db.addAppointment(new Appointment(getNewID.getID(), getNewDate, getNewTitle, getNewTime, getNewDetails));
finish();
break;
}
}
}
logcat 给了我这个:
03-20 11:24:50.800: E/AndroidRuntime(706): FATAL EXCEPTION: main
03-20 11:24:50.800: E/AndroidRuntime(706): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.calendar/com.example.calendar.CreateAppointment}: java.lang.NullPointerException
03-20 11:24:50.800: E/AndroidRuntime(706): Caused by: java.lang.NullPointerException
03-20 11:24:50.800: E/AndroidRuntime(706): at com.example.calendar.CreateAppointment.<init>(CreateAppointment.java:25)
出现错误的行是这样的:
String getNewTitle = nameTextBox.getText().toString();
最佳答案
您在编辑文本中输入任何值之前先为其分配值。所以你必须将其移动到 onCreate 方法中。
String getNewDate = date.toString();
String getNewTitle = nameTextBox.getText().toString();
String getNewTime = timeTextBox.getText().toString();
String getNewDetails = detailsTextBox.getText().toString();
所以你的完整代码看起来像这样,
public class CreateAppointment extends Activity implements OnClickListener{
EditText nameTextBox;
EditText timeTextBox;
EditText detailsTextBox;
Button createButton;
Date date = new Date();
Appointment getNewID;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create);
createButton = (Button) findViewById(R.id.apptSave);
nameTextBox = (EditText)findViewById(R.id.apptName);//Assign the global name box
timeTextBox = (EditText)findViewById(R.id.apptTime);//Assign the global time box
detailsTextBox = (EditText)findViewById(R.id.apptDetails);//Assign the global details box
String getNewDate = date.toString();
String getNewTitle = nameTextBox.getText().toString();
String getNewTime = timeTextBox.getText().toString();
String getNewDetails = detailsTextBox.getText().toString();
createButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.apptSave:
DBHandler db = new DBHandler(this);
db.addAppointment(new Appointment(getNewID.getID(), getNewDate, getNewTitle, getNewTime, getNewDetails));
finish();
break;
}
}
}
或者您也可以将此代码放入按钮的点击事件中,例如,
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.apptSave:
String getNewDate = date.toString();
String getNewTitle = nameTextBox.getText().toString();
String getNewTime = timeTextBox.getText().toString();
String getNewDetails = detailsTextBox.getText().toString();
DBHandler db = new DBHandler(this);
db.addAppointment(new Appointment(getNewID.getID(), getNewDate, getNewTitle, getNewTime, getNewDetails));
finish();
break;
}
}
关于java - NullPointerException 导致 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531710/