我一直在寻找其他许多答案,最完整的答案就是这个答案: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();
从我读过的所有内容来看,这应该是所有涉及的内容,但我错过了一些内容,因为第一项活动中没有任何内容,我不明白为什么。
答案 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个参数。
请求代码传递给startActivityForResult()方法。
第二个活动指定的结果代码。如果操作成功,则为RESULT_OK;如果用户退出或由于某种原因操作失败,则为RESULT_CANCELED。
包含结果数据的Intent。
因此,从第三个参数中,您可以获得数据。