好吧,标题不是很多标题,但不要判断我。我搜索了网站,还有很多其他但我似乎没有找到正确的答案。问题是:
我创建了一个具有一个主要活动(活动A)的Android应用程序,它打开了另一个活动B,我放入了一些数据,该数据应该被转移回第一个活动,然后记录到数据库中
我是这样做的:在行动中A:
- 我调用一个新意图,然后调用startActivityForResult()
方法。
在第二个活动中,当我点击保存按钮时,会执行此操作:
btnSave.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.putExtra("date", dateText.getText().toString());
i.putExtra("time", timeText.getText().toString());
i.putExtra("text", taskText.getText().toString());
setResult(100);
startActivity(i);
}
});
当我回到第一个活动(主要活动)时,会调用此方法。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==100)
{
i = getIntent();
String text = i.getStringExtra("text");
String date = i.getStringExtra("date");
String time = i.getStringExtra("time");
Toast.makeText(this, text + "-" + date + "-" + time, Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
使用toast消息我只获得空值,这意味着数据没有从第二个活动传回第一个。有人可以帮助我,顺便说一下,数据应该保存到数据库中,但这是另一个问题,我刚才提到它以防万一以后不能让我复杂化。
提前致谢:D
答案 0 :(得分:1)
在按钮保存点击监听器中,您无需使用startActivity()调用Intent
。就像这样
Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
setResult(RESULT_OK,returnIntent);
finish();
在onActivityResult()中使用Intent data
请参阅此Example
答案 1 :(得分:1)
您可以通过多种方式从其他活动中获取数据,
答案 2 :(得分:0)
在第二个活动中,您不会调用startActivity。您可以拨打setResult(int)或setResult(int, Intent),然后拨打finish()
在第一个活动中,您将检索结果。
答案 3 :(得分:0)
尝试在第二个活动中使用它
Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
returnIntent.putExtra("date", dateText.getText().toString());
returnIntent.putExtra("time", timeText.getText().toString());
returnIntent.putExtra("text", taskText.getText().toString());
setResult(RESULT_OK,returnIntent);
finish();
并在第一个活动中尝试使用
data.getStringExtra("date");
和剩下的类似。