Android 如何打开一个活动,输入数据,然后使用数据返回到第一个活动?
好的,这个标题并不是一个很重要的标题,但是不要评判我。我已经搜索了这个网站,还有很多其他的,但是我似乎没有找到正确的答案。问题是: 我创建了一个android应用程序,它有一个主要活动(活动A),它打开另一个活动B,我在其中输入一些数据,这些数据应该传输回第一个活动,然后记录到数据库中 我是这样做的: 在活动A中: -我调用一个新的intent,然后调用Android 如何打开一个活动,输入数据,然后使用数据返回到第一个活动?,android,android-intent,Android,Android Intent,好的,这个标题并不是一个很重要的标题,但是不要评判我。我已经搜索了这个网站,还有很多其他的,但是我似乎没有找到正确的答案。问题是: 我创建了一个android应用程序,它有一个主要活动(活动A),它打开另一个活动B,我在其中输入一些数据,这些数据应该传输回第一个活动,然后记录到数据库中 我是这样做的: 在活动A中: -我调用一个新的intent,然后调用startActivityForResult()方法 在第二个活动中,当我点击“保存”按钮时,将执行以下操作: btnSave.setOnCli
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消息,我只得到null值,这意味着数据没有从第二个活动传输回第一个活动。有人能帮我吗?顺便说一句,数据应该保存到数据库中,但这是另一个问题,我刚才提到了它,以防以后它可能会帮助我避免事情复杂化
提前感谢:D在按钮保存单击侦听器中,您无需使用startActivity()调用
Intent
。就是这样
Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
setResult(RESULT_OK,returnIntent);
finish();
在onActivityResult()中,使用意图数据获取数据
在你的第二个活动中,你不需要称之为startActivity。您可以调用或,然后finish()
在第一个活动中,检索结果。尝试在第二个活动中使用此选项
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");
与之类似的还有剩余的。您可以通过多种方式从不同的活动中获取数据
您正在使用的一个,错误是不要调用startActivity
和
只需调用finish()代码>
使用静态变量并直接在这些公共字符串上输入数据
变量并将其带到任何地方
使用SharedReferences并通过使用
键值,即不仅仅在onActivityResult
它起作用了。通过你提供的链接,我得到了正确的答案:欢迎你。。很抱歉,这是莎拉,不是莎拉