java - 如何在 TAB 应用程序中的子 Activity 上按后退按钮时返回父 Activity

标签 java android android-layout android-widget

我有 4 个带有 Activity 组的选项卡。所有选项卡都包含项目列表,按下任何项目时,其说明将显示在新 Activity 中。 我正在使用 Activity 组将子 Activity 嵌入到选项卡中。并且我正在使用替换内容 View 来更改 Activity 组 View 。

当我按下后退按钮时,我从 child 那里调用 finish() ,然后我立即退出应用程序..有没有办法使用 Activity 组返回到父 Activity ...???

我正在使用以下代码来更改 Activity 组 View ..bt 不知道如何返回此 Activity ..

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

}  

最佳答案

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

你的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);
}
}

在您的家长 Activity 中

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

在您的 child Activity 中使用

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

关于java - 如何在 TAB 应用程序中的子 Activity 上按后退按钮时返回父 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491044/

相关文章:

java - 使用自定义 X509KeyManager 时,Java 无法为 SSL 握手确定匹配的密码套件

java - 无法在原始类型 int 上调用 nextint()

android - AndEngine相机偏移和2个场景

android - 使用默认身份验证在 FB 上发布照片并获取照片已发布的消息的简单技术

java - 何时使用convertRowIndexToModel

java - 如何使用 REST Assured 自动获取 Bearer Token

android - 应用程序开发

android - android.hardware.camera2.full 从哪里来?

java - 相对布局参数无法正常工作

android - 什么是工具 :layout in fragment xml file?