0

ボタンをクリックして別のページに移動すると、プログラムがクラッシュします。私の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.lang.NullPointerException

2番目のアクティビティを呼び出すために使用されるメインアクティビティから:

  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();
    }   

  }
4

2 に答える 2

1

非常に限られた情報 (スタック トレースなど) があり、エラーの可能性が多すぎます。NullPointerException を取得しています。これは、コード内のnull オブジェクトにアクセスしようとしている場所を意味します。
真の可能性の 1 つは、インテントから追加データを取得しようとしている 2 番目のアクティビティのコードのこの部分です。最初のアクティビティに余分なデータを追加していないため、null を受け取り、バンドルから文字列を取得しようとしています。コードのこの時点で、文字列が null であることを確認してください。

Bundle RegBundle = getIntent().getExtras();
if(RegBundle != null) {
    bundleRegName = RegBundle.getString(rUsername);
    bundleRegCode = RegBundle.getString(rPasscode);
}
于 2012-08-21T19:10:24.780 に答える
0

その限られた情報で、それは多くのことになる可能性があります。最も可能性の高い原因の 1 つは、androidmanifest.xml で新しいアクティビティを宣言していないことです。起動しようとしているアクティビティを androidmanifest.xml で宣言しましたか?

于 2012-08-21T18:36:58.737 に答える