버튼을 누를 때 새로운 활동이 열리는 간단한 응용 프로그램을 작성하려고합니다. 그러면 사용자는 텍스트 필드에 일부 텍스트를 입력 할 수 있고 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);
}