android:从标签中结束活动

时间:2011-01-15 11:50:14

标签: android android-activity tabs

我有3个课程,我们称之为1,2和3。

Class 1扩展了TabActivity并组织了整个标签,Class 2和3只是两个单独的标签,每个标签都带有一些文本行。我使用startActivityForResult从另一个活动调用Class 1。

然后我在第2课中添加了optionsMenu,当用户点击optionMenu时,会执行以下代码:

@Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        Intent i = new Intent();
        switch(item.getItemId()) {
            case Result.NEXT_ID:
                i.putExtra(Result.PAGE_REQUEST, NEXT);
                setResult(RESULT_OK, i);
                finish();
                break;
            case Result.PREV_ID:
                i.putExtra(Result.PAGE_REQUEST, PREV);
                setResult(RESULT_OK, i);
                finish();
        }
        return super.onMenuItemSelected(featureId, item);
    }

在我的父类(开始时调用1的类)中,在onActivityResult函数中,我想从附加内容中获取数据。但是,意图始终为空,我无法弄清楚原因。

当我在类2上调用finish()时,是否在类1中调用其他函数?我是否必须以某种方式传输意图数据?

这是startactivityforresult,结果是Class 1

private void getResult(String result) {
        Intent i = new Intent(this, Result.class);
        i.putExtra(RESULT, result);
        i.putExtra(PAGE, curr_start_page);
        startActivityForResult(i, 0);
    }

我也尝试将optionmenu方法放在Class 1中,但是,当我调用finish()时,它什么也没做。

编辑:

我认为我应该将选项菜单放在第1类中,因为我在startActivityForResult中启动了第1类。但是如何退出选项卡布局?在类1中调用finish()似乎没有办法。

2 个答案:

答案 0 :(得分:1)

我得到了它。在class 2的optionsmenu方法中,我需要做

this.getParent().setResult(RESULT_OK, i);

然后调用finish(),它可以正常工作。

答案 1 :(得分:0)

在第1课中,覆盖onActivityResult并通过对所收到的任何内容执行setResult来实现它。

看看是否有效。

您正尝试从2到1的父级发送值。但是当第2阶段结束时,它只是将它的值发送到第1类。我不认为第1类将这个值返回给它的调用者。