![](/img/trans.png)
[英]Sending data to Activity without startActivityForResult
[英]Sending data from one activity to another startactivityforresult
我在论坛上进行了搜索,但找不到适合我的正确答案。 我在下面包括了相关部分
活动一
implicitActivationButton.setOnClickListener(new OnClickListener() {
// Call startImplicitActivation() when pressed
@Override
public void onClick(View v) {
Intent myIntent = new Intent(ActivityLoaderActivity.this,
ExplicitlyLoadedActivity.class);
startActivityForResult(myIntent, GET_TEXT_REQUEST_CODE);
}
});
还有一点
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "Entered onActivityResult()");
String input=data.getStringExtra(TAG);
mUserTextView.setText(input);
}
这是用户输入一些数据后的活动2
String input=mEditText.getText().toString();
Intent i = new Intent(ExplicitlyLoadedActivity.this, ActivityLoaderActivity.class);
i.putExtra("TAG",input);
startActivity(i);
this.setResult(RESULT_OK);
finish();
完全没有错误消息,但是屏幕上的文本没有更新。 它应该
不需要第二节课的开始活动:
您需要使用以下方式更改代码:
Intent i = new Intent(); // or // Intent i = getIntent()
i.putExtra("TAG",input);
setResult(RESULT_OK , i);
finish();
对于取消,
setResult(RESULT_CANCELED, i);
finish();
这样尝试
String input=data.getStringExtra("TAG");
代替
String input=data.getStringExtra(TAG);
在Activity2上,您正在启动ExplicityLoadedActivity的新实例,而不是返回到先前的实例。
您应该只设置结果,然后完成第二项活动。
这是您可以在第二个活动中尝试的代码:
Intent returnIntent = new Intent();
returnIntent.putExtra("TAG",input);
setResult(RESULT_OK, returnIntent);
finish();
像这样尝试在ExplicitlyLoadedActivity
设置结果代码
String input=mEditText.getText().toString();
Intent i = new Intent();
i.putExtra("TAG",input);
this.setResult(RESULT_OK,i);
finish();
并在ActivityLoaderActivity
访问结果字符串,即
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "Entered onActivityResult()");
String input=data.getStringExtra("TAG");
mUserTextView.setText(input);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.