2011-08-01 7 views
2

インテントから呼び出し側のアクティビティに追加データを転送する必要があります。 基本アクティビティは "startActivityForResult()"です。onActivityResult()でgetStringExtra()が失敗する

ネストされたアクティビティが結果を設定し、クリックリスナーで追加データを置く:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    preferences.username = data.getStringExtra("username"); 
    preferences.password = data.getStringExtra("password"); 
} 

しかし、このリターンは常にnull:

public void onClick(View v) { 
    setResult(LOGIN_RESULT_IN); 
    LoginActivity.this.getIntent().putExtra("username", userStr); 
    LoginActivity.this.getIntent().putExtra("password", passStr); 

    LoginActivity.this.finish(); 
} 

呼び出し元の活動はしてデータをチェックします。それはなぜ機能しないのですか?

答えて

2

、それだ

public void onClick(View v) { 

     Intent intent=new Intent(); 
     intent.putExtra("username", userStr); 
     intent.putExtra("password", passStr); 

     setResult(LOGIN_RESULT_IN,intent); 
    LoginActivity.this.finish(); 
} 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    preferences.username = data.getStringExtra("username"); 
    preferences.password = data.getStringExtra("password"); 
} 
+0

おかげで、このコードを試してみてください!提案したように新しいIntentオブジェクトを作成するのではなく、既存のオブジェクトを継承しますが、実際には問題はありません。なぜ私は明示的にsetResult()を使ってインテントを設定する必要があるのだろうか、なぜデフォルトでは既存のものを転送しないのだろうか? –

+0

OK、新しいインテントを作成せずにこのコードを使用しても問題ありません。LoginActivity.this.getIntent()。putExtra( "username"、userStr); LoginActivity.this.getIntent()。putExtra( "password"、passStr); setResult(LOGIN_RESULT_IN、this.getIntent()); LoginActivity.this.finish(); –

関連する問題