在我的MainActivity中,我发布了第二个活动:
Button button = (Button) findViewById(R.id.btnPush);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Intent nowStart = new Intent(getApplicationContext(), AddPillScheduleActivity.class);
startActivityForResult(nowStart, RESULT_OK);
//startSecond();
}
});
然后在我的第二个活动中,我想将一个值返回给主活动。
Intent i=new Intent();
i.putExtra("ANSWER", ans);
setResult(RESULT_OK,i);
finish();
这似乎执行得很好,但回到我的MainActivity,我想抓住价值。这是我遇到麻烦的地方。我的调试器永远不会停留在我的onActivityResult上,即:
@Override
protected void onActivityResult(int requestCode ,int resultCode ,Intent data ) {
super.onActivityResult(requestCode, resultCode, data);
String name = getIntent().getExtras().getString("ANSWER");
if (resultCode == RESULT_OK) {
Toast.makeText(this, name, Toast.LENGTH_LONG).show();
}
有人可以放一点光吗?感谢。
答案 0 :(得分:1)
你没有从正确的意图中获得价值,即方法附带的价值。将代码修改为以下内容:
@Override
protected void onActivityResult(int requestCode ,int resultCode ,Intent data ) {
super.onActivityResult(requestCode, resultCode, data);
String name = data.getStringExtra("ANSWER");
if (resultCode == RESULT_OK) {
Toast.makeText(this, name, Toast.LENGTH_LONG).show();
}
}
使用getStringExtra方法将String
置于意图中,而不是bundle
。此外,最佳做法不是requestCode
和resultCode
使用相同的代码。
答案 1 :(得分:0)
String name = getIntent().getExtras().getString("ANSWER");
正在访问错误的意图。 getIntent()
返回启动活动的意图。你想要
String name = data.getExtras().getString("ANSWER");
此外,startActivityForResult()
的第二个参数是请求代码,因此使用RESULT_OK
- 尽管它仍然有效 - 令人困惑。