从第二个活动中检索值

时间:2015-02-21 23:14:05

标签: java android

在我的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();
    }

有人可以放一点光吗?感谢。

2 个答案:

答案 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。此外,最佳做法不是requestCoderesultCode使用相同的代码。

答案 1 :(得分:0)

String name = getIntent().getExtras().getString("ANSWER");

正在访问错误的意图。 getIntent()返回启动活动的意图。你想要

String name = data.getExtras().getString("ANSWER");

此外,startActivityForResult()的第二个参数是请求代码,因此使用RESULT_OK - 尽管它仍然有效 - 令人困惑。