2014-02-14 2 views
1

버튼을 누를 때 새로운 활동이 열리는 간단한 응용 프로그램을 작성하려고합니다. 그러면 사용자는 텍스트 필드에 일부 텍스트를 입력 할 수 있고 Enter 버튼을 누르면 기본 활동으로 돌아가고 TextView에 입력 한 텍스트가 표시되어야합니다.getStringExtra() NullPointerException을 반환합니다.

private void startExplicitActivation() { 
    Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
    startActivityForResult(intent, GET_TEXT_REQUEST_CODE); 
} 

나 또한 그렇게처럼 내 주요 활동 클래스에 onActivityResult()를 정의 : 내 주요 활동 클래스에서

, 나는 버튼과 같이 누르면 새로운 활동을 시작

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == GET_TEXT_REQUEST_CODE) { 
       mUserTextView.setText(data.getStringExtra("input")); 
     } 
    } 
} 

여기서 mUserTextView은 두 번째 활동에서 사용자가 입력 한 텍스트를 기반으로 변경하려는 TextView 개체입니다. 주 활동의 onCreate() 방법으로 초기화되었습니다. 내 두 번째 활동에서

, 나는 새로운 Intent을 만들어에 노력하고 버튼을 클릭하면 putExtra()를 불렀다 :

private void enterClicked() { 
    String input = mEditText.getText().toString(); 

    Intent intent = new Intent(); 
    intent.putExtra("input", input); 

    setResult(RESULT_OK); 
    finish(); 
} 

나는이 디버깅을 시도하고 내 mEditText에서 텍스트를 얻을 수 있으며, 그것을 input에 할당합니다. 내 Intent 객체에서 적절 input에 텍스트를 넣습니다,하지만 난 내 주요 활동으로 되돌아 갈 때, 그것은 나에게 오류를주고있다 :

mUserTextView.setText(data.getStringExtra("input")); 

:이 라인을 가리키는

Caused by: java.lang.NullPointerException 

이 방법은 finish() 방법을 사용했기 때문에 발생합니까? 당신이 할 때

private void enterClicked() { 
    String input = mEditText.getText().toString(); 

    Intent intent = new Intent(SecondActivity.this, MainActivity.class); 
    intent.putExtra("input", input); 

    setResult(RESULT_OK); 
    startActivity(intent); 
} 

답변

2

setResult(RESULT_OK,intent); 

setResult(RESULT_OK); 

교체 : 나는 내가이 활동을 완료하고 이후에 사용하는 것이 적절하다고 생각하지만, 내가 대신이 일을해야 발신자 Activity에게 정보를 전달하고 결과를 Intent 번으로 보내고 Activity을 다시 enterClicked()으로 시작하지 마십시오. setResult() 다음에 finish()으로 전화하십시오. 사용자가 설정 한 결과의 의도를 놓친 setResult(RESULT_OK,intent);

1

를 호출 Intent data 매개 변수는 전달 된 정보를 포함 ActivityonActivityResult() 호출합니다 . 이것을 다음과 같이 추가하십시오 : setResult(RESULT_OK,intent);

0

: 이것은 당신이 다시 보내이 같은라는 intent에서 Activity해야 ...

관련 문제