startActivityForResult(),它是如何工作的?

时间:2012-09-09 15:16:53

标签: android view android-activity get return-value

我正在处理我的关卡选择器活动,我希望从我在MainGameView中选择的级别获得结果,该级别由另一个活动运行。我该怎么做呢?

当你选择1级时,这就是我的目的:

     Button test1 = (Button)findViewById(R.id.test1);
     test1.setOnClickListener(new OnClickListener() {

       public void onClick(View v) {
            setLevel(1);
            Intent start = new Intent("nielsen.happy.activities.HAPPYACTIVITY");
            startActivityForResult(start, getLevel());
            finish();
        }
    });

但我从哪里开始?如何将此值放入我的视图中,以便根据所选的级别更改位图和其他值?我需要在"HappyActivity"(MainGameAcitvity)中做些什么来获得结果吗?现在它正在返回0

阐述游戏的设置方式:菜单 - > levelselector - >游戏。所以我需要将levelselector的结果导入到游戏中,因此它知道要从什么级别开始。

1 个答案:

答案 0 :(得分:1)

(更新的更正后的回复) 不要使用startActivityForResult()。

尝试使用活动A:
Intent start = new Intent("nielsen.happy.activities.HAPPYACTIVITY"); start.putExtra("level", getLevel());
startActivity(start);
finish();

然后在活动B中,执行以下操作:
Extras mBundle = getIntent().getExtras();
int level = mBundle.getInt("level");

(原创,不正确的回复) 让调用活动一个包含上面示例代码的活动。 让调用活动B成为你称之为HAPPACTIVITY的那个。

活动A使用请求代码调用startActivityForResult()。 活动B启动,在退出之前,您调用setResult(int code)。

当活动B结束时,A通过onActivityResult()方法返回顶部。

实现onActivityResult()并查看您获得的属性。

FYI有一个条件,其中setResult(RESULT_OK)或setResult(RESULT_CANCELED)不会触发A中的onActivityResult()(我不记得是什么情况)。