【问题标题】:how to return back to parent activity while pressing back button on chlild activity in TAB Application如何在 TAB 应用程序中按下 chlild 活动的返回按钮时返回父活动
【发布时间】:2011-06-27 09:42:05
【问题描述】:

我有 4 个带有活动组的选项卡。所有选项卡都包含项目列表,按下任何项目时,它的描述都将显示在新活动中。 我正在使用活动组在选项卡中嵌入子活动。我正在使用替换内容视图来更改活动组视图。

当我按下返回按钮时,我从孩子那里调用完成(),我立即退出应用程序..有没有办法使用活动组返回父活动......???

我正在使用以下代码更改活动组视图..bt 不知道如何回到此活动..

public void replaceContentView(String id, Intent newIntent) 
{
    View mview = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)).getDecorView(); 
    this.setContentView(mview);

}  

【问题讨论】:

    标签: java android android-layout android-widget


    【解决方案1】:

    我也遇到了这个问题,但解决了它看看下面的代码希望对你也有帮助

    你的activityGroup应该是这样的

    public class ABCGroup extends ActivityGroup{
    
    public static ABCGroup group;
    private ArrayList<View> history;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.history = new ArrayList<View>();
        group = this;
    
        View view = getLocalActivityManager().startActivity
                    ("ParentActivity", 
                    new Intent(this, ParentActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                    .getDecorView();
    
        replaceView(view);
    }
    
    public void replaceView(View v) {
        // Adds the old one to history
        history.add(v);
        // Changes this Groups View to the new View.
        setContentView(v);
    }
    
    public void back() {  
        if(history.size() > 0) {  
            history.remove(history.size()-1);
            if(history.size()<=0){
                finish();
            }else{
                setContentView(history.get(history.size()-1));
            }
        }else {  
            finish();  
        }  
    }
    
    @Override  
    public void onBackPressed() {  
        ABCGroup.group.back();
    }
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if (keyCode == KeyEvent.KEYCODE_BACK){
            ABCGroup.group.back();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    }
    

    在你的家长活动中

    View mview = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)).getDecorView();
    ABCGroup.group.replaceView(v);
    

    在您的孩子活动中使用

    public boolean onKeyDown(int keyCode, KeyEvent event){
        if (keyCode == KeyEvent.KEYCODE_BACK){
            ABCGroup.group.back();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    

    【讨论】:

    • 你好先生......我正在使用你的代码......它完美地工作......我的问题是当我按下返回按钮时,我的活动组的第一个视图没有显示。
    • @RahulSharma:我一直在尝试您的解决方案。但没有得到输出。你能解释一下吗?
    • 它对我有用。在 Tabs 上仍然很难找到好的解决方案,非常感谢! :)
    • 请帮助我,我有不同模块的选项卡,其中一个选项卡表示设置我想在设置选项卡中打开一个新活动,我可以通过在子活动中将选项卡活动设置为活动组 bt 来做到这一点我按下它会关闭我想返回设置活动的应用程序
    猜你喜欢
    • 2019-08-07
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多