2011-08-01 2 views
2

Intent에서 호출하는 활동으로 추가 데이터를 전송해야합니다. 기본 활동은 "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

을 시도! 당신이 제안한 것처럼 새로운 인 텐트 오브젝트를 생성하지는 않지만, 기존의 오브젝트를 넘겨 주지만, 실제로 중요하지는 않습니다. 왜 내가 명시 적으로 setResult()를 사용하여 인 텐트를 설정해야하는지 궁금하다. 왜 기본적으로 기존의 것을 전달하지 않습니까? –

+0

좋아, 새로운 의도를 만들지 않고이 코드를 사용하면 문제가되지 않습니다. LoginActivity.this.getIntent(). putExtra ("username", userStr); LoginActivity.this.getIntent(). putExtra ("password", passStr); setResult (LOGIN_RESULT_IN, this.getIntent()); LoginActivity.this.finish(); –

관련 문제