Android 意图数据不返回

Android 意图数据不返回,android,android-intent,Android,Android Intent,我已经浏览了许多其他答案,其中最完整的一个是这个答案:。尽我所能遵循这些原则,当我尝试从返回的意图中获取字符串时,我没有看到任何数据 以下是主活动,它使用startActivityForResult()调用第二个活动,然后在文本视图中显示来自intent的字符串 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceS

我已经浏览了许多其他答案,其中最完整的一个是这个答案:。尽我所能遵循这些原则,当我尝试从返回的意图中获取字符串时,我没有看到任何数据

以下是主活动,它使用startActivityForResult()调用第二个活动,然后在文本视图中显示来自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);
    }
}
第二个活动是我试图将变量字符串任务返回到主活动。 代码被截断为仅返回意图部分:

String task = "foo";

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

从我所阅读的所有内容来看,这应该是所有涉及的内容,但我遗漏了一些内容,因为第一个活动中没有显示任何内容,我也不清楚原因。

在您的示例中,使用传递到onActivityResult(称为数据)中的意图,而不是获取创建活动时传递的意图的getIntent

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

onActivityResult()方法有3个参数

  • 请求代码传递给startActivityForResult()方法

  • 第二个活动指定的结果代码。如果操作成功,则为结果\确定;如果用户退出或操作因某种原因失败,则为结果\取消

  • 携带结果数据的意图

  • 所以,从第三个参数,你可以得到数据

    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