意图数据没有返回

时间:2016-10-11 03:11:47

标签: android android-intent

我一直在寻找其他许多答案,最完整的答案就是这个答案:Sending data back to the Main Activity in android。我尽力而为,当我尝试从返回的意图中获取字符串时,我没有看到任何数据。

这是使用startActivityForRestult()调用第二个活动的主要活动,然后在textview中显示来自intent的字符串。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String myStr = extras.getString("TASK");
            TextView tv = (TextView) findViewById(R.id.taskList);
            tv.setText(myStr);
        }

    }//onActivityResult

    /** Called when the user clicks the Add Task button */
    public void addTask(View view) {
        Intent intent = new Intent(this, AddTaskActivity.class);
        startActivityForResult(intent, 1);
    }
}

我试图将变量字符串任务返回到主活动的第二个活动。 代码被截断为intent return部分:

String task = "foo";

Intent returnIntent = getIntent();
returnIntent.putExtra("TASK", task);
setResult(Activity.RESULT_OK,returnIntent);
finish();

从我读过的所有内容来看,这应该是所有涉及的内容,但我错过了一些内容,因为第一项活动中没有任何内容,我不明白为什么。

2 个答案:

答案 0 :(得分:1)

在示例中使用传入onActivityResult的intent调用数据,而不是getIntent,它获取创建活动时传入的意图。

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
        Bundle extras = data.getExtras(); //THIS IS THE LINE I CHANGED
        if (extras != null) {
            String myStr = extras.getString("TASK");
            TextView tv = (TextView) findViewById(R.id.taskList);
            tv.setText(myStr);
        }
}//onActivityResult

答案 1 :(得分:0)

在onActivityResult()方法中,您没有使用getIntent()方法获取数据。

onActivityResult()方法有3个参数。

  1. 请求代码传递给startActivityForResult()方法。

  2. 第二个活动指定的结果代码。如果操作成功,则为RESULT_OK;如果用户退出或由于某种原因操作失败,则为RESULT_CANCELED。

  3. 包含结果数据的Intent。

  4. 因此,从第三个参数中,您可以获得数据。