我嘗試用ChooseActivity向MainActivity中額外的字符串傳播一個intent。在MainActivity中,調用onActivityResult來獲取字符串,但得到一個空值。爲什麼它不能得到字符串?onActivityResult()沒有從setResult返回一個意圖()
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE_CHOOSE = 1;
private Button mButtonStart;
private Button mButtonGuess;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonStart = (Button)findViewById(R.id.button_start);
mButtonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ChooseActivity.class);
**startActivityForResult**(intent, REQUEST_CODE_CHOOSE);
}
});
mButtonGuess = (Button)findViewById(R.id.button_guess);
mButtonGuess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mButtonGuess.setText(buttonName);
}
});
}
private String buttonName;
@Override
protected void **onActivityResult**(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
buttonName = ChooseActivity.getExtraChoose(data);
}
}
的ChooseActivity類:
public class ChooseActivity extends AppCompatActivity {
private static final String EXTRA_CHOOSE = "com.robyn.guessapp.choose";
private Button mButtonA;
private Button mButtonBack;
private String mButtonName;
public static String getExtraChoose(Intent data) {
return data.getStringExtra(EXTRA_CHOOSE);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choose);
mButtonA = (Button)findViewById(R.id.button_a);
mButtonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mButtonName = mButtonA.getText().toString();
setChooseResult(mButtonName);
}
});
mButtonBack = (Button)findViewById(R.id.button_back);
mButtonBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ChooseActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
private void setChooseResult(String buttonName) {
Intent data = new Intent();
data.putExtra(EXTRA_CHOOSE, buttonName);
**setResult**(**RESULT_OK**, data);
}
}