如何使用intent startactivityforresult方法?

时间:2015-04-29 13:40:37

标签: android android-intent

我创建了一个库,它的库有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()方法?

3 个答案:

答案 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);