как вернуться к родительской активности при нажатии кнопки «Назад» на активности ребенка в приложении TAB - PullRequest
0 голосов
/ 27 июня 2011

У меня есть 4 вкладки с группой действий. Все вкладки содержат список элементов, и при нажатии любого элемента его дискриминация будет отображаться в новом действии. Я использую группу активности для встраивания дочерних действий в вкладку.изменить представление группы активности.

, когда я нажимаю кнопку "Назад", я вызываю метод finish () для дочернего элемента, и я сразу же покидаю приложение. Есть ли способ вернуться к родительскому действию, используя группу действий ... ???

я использую следующий код для изменения вида деятельности группы .. но не знаю, как вернуться к этой деятельности ..

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

}  

1 Ответ

2 голосов
/ 27 июня 2011

Я также застрял с этой проблемой, но решил ее, посмотрите код ниже, надеюсь, вам также поможет

Ваша группа активности должна выглядеть примерно так

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...