【问题标题】:android: ending activity from tabandroid:从选项卡结束活动
【发布时间】:2011-01-16 01:05:26
【问题描述】:

我有 3 个类,我们称它们为 1、2 和 3。

Class 1 扩展了 TabActivity 并组织了整个选项卡,Class 2 和 Class 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 函数中,我想从 extras 中获取数据。但是,intent 总是为空,我不知道为什么。

当我在类 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() 似乎不起作用。

【问题讨论】:

  • 你能说明你是如何调用 startActivityForResult 的吗?

标签: android android-activity tabs


【解决方案1】:

我刚收到。在类 2 的 optionsmenu 方法中,我需要这样做

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

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

【讨论】:

【解决方案2】:

在类 1 中,覆盖 onActivityResult 并实现它,方法是使用您收到的任何内容执行 setResult

看看这是否有效。

您正在尝试将值从 2 发送到 1 的父级。但是当类 2 完成时,它只是将其值发送给类 1。我认为类 1 不会将此值返回给它的调用者。

【讨论】:

  • 我刚刚尝试过,我从 onActivityResult 中的参数为类 1 设置了结果,但意图仍然为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多