我创建了一个库,它的库有4个活动。我故意在theese活动之间移动,但我不知道如何将结果数据发送到主应用程序? 我这样开始我的图书馆:
Intent intent = new Intent(this, LibraryFirstActivity.class);
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1){
if (resultCode == RESULT_OK){
String result = data.getStringExtra("result");
Log.d("result", result);
}
if (resultCode == RESULT_CANCELED){
Toast.makeText(this, "CANCELED", Toast.LENGTH_SHORT).show();
}
}
}
我启动了LibraryFirstActvity。在LibraryFirstActivity中,我转到LibrarySecondActivity:
Intent intent = new Intent(this, LibrarySecondActivity.class);
startActivity(intent);
finish();
但我也可以去LibraryThirdActivity或其他。
那么我该如何返回主应用onActivityResult()
方法?
答案 0 :(得分:2)
1)在 FirstActivity 中使用startActivityForResult()
方法调用 SecondActivity 。
例如:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
2)在 SecondActivity 中,将要返回的数据设置为 FirstActivity 。如果您不想返回,请不要设置任何。
例如:如果要发回数据,请在 SecondActivity 中:
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(RESULT_OK,returnIntent);
finish();
结果可以是:String / boolean / int / long / Bundle ...
如果您不想返回数据:
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
3)现在,在 FirstActivity 类中,为onActivityResult()
方法编写以下代码。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
答案 1 :(得分:0)
在librarySecondActivity中,您还应该启动activityForResult并使用onActivityResult获取值。然后,您将信息从第三个发送回第二个,从第二个发送回第一个(主要)。使用相同的逻辑,您可以添加第四个。递归思考!
答案 2 :(得分:0)
查看this link,了解有关startActivityForResult()
你必须@Override onActivityResult()
这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CONST_REQUEST_CODE) {
// your code
}
}
将startActivityForResult()
称为:
startActivityForResult(intentName, CONST_REQUEST_CODE);