Android 调用活动时发生NullPointerException
当我点击一个按钮进入另一个页面时,我的程序正在崩溃。我的听众似乎是对的,但我知道我错过了一些东西。有人能看出我哪里出了错吗 错误:Android 调用活动时发生NullPointerException,android,nullpointerexception,oncreate,onclicklistener,Android,Nullpointerexception,Oncreate,Onclicklistener,当我点击一个按钮进入另一个页面时,我的程序正在崩溃。我的听众似乎是对的,但我知道我错过了一些东西。有人能看出我哪里出了错吗 错误: 08-20 13:40:30.622: E/AndroidRuntime(1026): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.LoginScr.Example/com.LoginScr.Example.CredentialsActivity}: java.la
08-20 13:40:30.622: E/AndroidRuntime(1026): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.LoginScr.Example/com.LoginScr.Example.CredentialsActivity}: java.lang.NullPointerException
从用于调用第二个活动的主活动:
lsRegstr.setOnClickListener (new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(LoginScrExample.this, CredentialsActivity.class);
startActivity(i);
}
凭证活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
rName = (EditText)findViewById(R.id.reg_uname);
rCode= (EditText)findViewById(R.id.reg_pswd);
bReg = (Button) findViewById(R.id.reg_button);
bReg.setOnClickListener(this);
bRtn = (Button) findViewById(R.id.rtn_button);
bRtn.setOnClickListener(this);
Bundle RegBundle = getIntent().getExtras();
bundleRegName = RegBundle.getString(rUsername);
bundleRegCode = RegBundle.getString(rPasscode);
rName.setText(bundleRegName);
rCode.setText(bundleRegCode);
}
@Override
public void onClick (View v) {
rUsername = rName.getText().toString();
rPasscode = rCode.getText().toString();
RegDetails regDetails = new RegDetails();
regDetails.setlName(bundleRegName);
regDetails.setlCode(bundleRegCode);
if(v.getId()==R.id.rtn_button){
finish();
}else if(v.getId()==R.id.reg_button){
insertCredentials(regDetails);
}
}
private void insertCredentials(RegDetails regDetails){
LoginDB androidOpenDBHelper = new LoginDB(this);
SQLiteDatabase sqliteDB = androidOpenDBHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);
String[] whereClauseArgument = new String[1];
whereClauseArgument[0] = regDetails.getlName();
System.out.println(" Credentials Saved!" + whereClauseArgument[0]);
sqliteDB.close();
finish();
}
}
有了这些有限的信息,可能会有很多事情。最可能的原因之一是没有在androidmanifest.xml中声明新活动。您是否已在androidmanifest.xml中声明了要启动的活动?信息非常有限(如堆栈跟踪),可能会出现太多错误。您正在获取NullPointerException,这意味着您在代码中的某些地方试图访问null对象。
一个真正的可能性是在第二个活动中的代码这一部分,您试图从意图中获取额外数据。由于您尚未在第一个活动中添加任何额外数据,您将收到null,然后您将尝试从捆绑包中获取字符串。尝试在代码的这一点检查字符串是否为空。
Bundle RegBundle = getIntent().getExtras();
if(RegBundle != null) {
bundleRegName = RegBundle.getString(rUsername);
bundleRegCode = RegBundle.getString(rPasscode);
}
如果你能提供更多的异常堆栈跟踪,那就好了。它通常显示发生错误的确切行。