首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SubActivity中显示标签页?

如何在SubActivity中显示标签页?
EN

Stack Overflow用户
提问于 2011-12-11 14:17:14
回答 1查看 142关注 0票数 0

我做了一个应用程序,我在第一个选项卡上做了5个选项卡,当我单击任何ListItem时,都会有一个ListView,我有意图地调用另一个活动,这是一个问题,因为&当我单击列表项目时,选项卡会显示如何在我的SubActivity上显示选项卡。

任何帮助都将得到批准。

EN

回答 1

Stack Overflow用户

发布于 2011-12-11 14:53:22

这是Android的正常行为,不是很好。

我通常在从这个类扩展的Tab中创建第一个活动

代码语言:javascript
复制
public class TabActivityGroup extends ActivityGroup {
    protected LocalActivityManager manager;
    protected ArrayList<String> mIdList;

    public TabActivityGroup() {
        this(false);
    }

    public TabActivityGroup(boolean single) {
        super(single);
    }

    public void onCreate(Bundle ins) {
        super.onCreate(ins);
        manager = getLocalActivityManager();
        mIdList = new ArrayList<String>();
    }

    public void startChildActivity(String Id, Intent intent) {
        Log.d(this.getClass().getName(), "startChildActivity " + Id + " / " + mIdList.size());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        Window window = manager.startActivity(Id, intent);
        if (window != null) {
            mIdList.add(Id);
            setContentView(window.getDecorView());
        }
    }

    @Override
    public void finishFromChild(Activity child) {
        Log.d(this.getClass().getName(), "finishFromChild("+child.getClass().getName()+") mIdList.size " + mIdList.size());
        int index = mIdList.size() - 1;
        if (index < 1) {
            finish();
        }else{
            Log.e(getClass().getName(), "destroy " + mIdList.get(index));

            manager.destroyActivity(mIdList.get(index), true);
            mIdList.remove(index);
            index--;
            String lastId = mIdList.get(index);
            Activity previous = manager.getActivity(lastId);

            setContentView(previous.getWindow().getDecorView());
        }   
    }

    /**
     * Overrides the default implementation for KeyEvent.KEYCODE_BACK so that
     * all systems call onBackPressed().
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            goBack();
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }


    public void goBack() {
        Log.d(this.getClass().getName(), "goBACK() : " + mIdList.size());
        int length = mIdList.size();
        if (length > 1) {
            Activity current = manager.getActivity(mIdList.get(length - 1));
            current.finish();
        }else{
            ((MyApplication)getApplication()).systemExit(this);
                    //This just calls to System.exit
        }
    }
}

然后,您可以创建如下所示的Tab

代码语言:javascript
复制
public class TabOne extends TabActivityGroup {

    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);

        startChildActivity(OneActivity.class.getName(), new Intent(this, OneActivity.class));
    }

要牢记的事情:

  • 选项卡中没有任何内容,只是启动实际的选项卡活动

startChildActivity方法。这是为了在返回并访问第一个活动时获得良好的行为,并且应用程序需要关闭。

  • 在使用子活动时要非常小心,因为您有

使用TabActivityGroup上下文。您可以通过以下方式手动完成此操作

调用getParent(),或者更好地定义一个循环调用getParent()直到找到根父级的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8462305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档