如何从选项卡下的组活动下的活动中获取结果的活动?

时间:2012-04-11 09:45:43

标签: android android-activity android-tabactivity

我正在开发一个应用程序,我在其中使用多个Activity在Tab Activity下。我正在使用this Tutorial

我希望从下一个Activity获取结果。我该怎么做。我无法找到它。我已阅读了两个或三个示例,例如thisthis。但我无法弄清楚如何才能得到结果。我也试过

    View view = getLocalActivityManager().startActivityForResult("Search", 
new Intent(this, WhatMenu.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();    
But it only Supports `startActivity()`

。任何帮助都会令人感到欣慰 在此先感谢

3 个答案:

答案 0 :(得分:3)

我通过ViewFlipper解决了这个问题。感谢每个人的帮助。

答案 1 :(得分:1)

您还需要传递请求代码才能使用startActivityForResult()。如果您不知道它是什么,只需传递0.
startActivity()startActivityForResult()的语法不同。

答案 2 :(得分:0)

活动1
创建一个类变量以供参考。

private final int REQUEST_CODE = 0;

...
//Somewhere in your code you have to call startActivityForResult
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivityForResult(intent);


活动2     

在结束Activity2之前,您必须将结果设置为OK并将要恢复的数据放入Activity1 likeo

Intent data = new Intent();
data.putExtra("name", "Mark");
data.putExtra("number", 1);
data.putExtra("areYouHappy", true);

setResult(RESULT_OK, data);
finish(); //closes Activity2 and goes back to Activity1


现在返回Activity1,您应该覆盖onActivityResult方法并从Activity2中检索值。
首先检查Activity2的结果是否正常,然后检查你传递的参考REQUEST_CODE。从早些时候我们创建了私有final int REQUEST_CODE = 0,然后我们检查requestCode是否等于变量REQUEST_CODE。如果是,则从活动2中提取数据。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK) {
        if(requestCode==REQUEST_CODE) {
            if(data.getExtras()!=null) {
                String name = data.getStringExtra("name");
                int number = data.getIntExtra("number",0); //2nd parameter is the default value in case "number" does not exist 
                boolean areYouHappy = data.getBooleanExtra("areYouHappy", false); //2nd parameter is the default value in case "areYouHappy" does not exist
            }
        }
    }
}