Java 从第二个活动中检索值
在我的主要活动中,我启动了第二个活动:Java 从第二个活动中检索值,java,android,Java,Android,在我的主要活动中,我启动了第二个活动: Button button = (Button) findViewById(R.id.btnPush); button.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ Intent nowStart = new Intent(getApplicationContext(),
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();
这似乎执行得很好,但回到我的主要活动中,我想抓住价值。这就是我遇到麻烦的地方。我的调试器从未在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();
}
有人能帮我弄点光吗?谢谢
String name = getIntent().getExtras().getString("ANSWER");
正在访问错误的意图getIntent()
返回启动活动的意图。你想要
String name = data.getExtras().getString("ANSWER");
另外,
startActivityForResult()
的第二个参数是一个请求代码,因此使用RESULT\u OK
——尽管它仍然有效——是令人困惑的。您没有从正确的意图中获得值,即该方法附带的意图。将代码修改为以下内容:
@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();
}
}
在将
字符串
而不是束
放入意图时使用该方法。此外,并非最佳做法对requestCode
和resultCode
使用相同的代码 我把它放在我的MainActivity中,但是调试器没有中断,我也从来没有得到Toast消息,尽管我被重定向回屏幕上的MainActivity。更新了我的答案。检查这是否为您解决了问题:)