RadioButton的Android后退导航

时间:2015-01-13 01:00:15

标签: android navigation lifecycle

我有一个actionBar,而不是在两个列表片段之间导航,这些片段称为' All'和'收藏夹'。在actionBar布局中,它们是RadioButtons。 '所有'是一个数据条目列表,'收藏夹'是该列表的过滤子集。当进入'收藏夹'我希望设备的后退按钮始终指向“全部”。我怎样才能做到这一点?以下是一些相关代码,如果它有帮助:

public class InstanceListActivity extends MyBaseActivity {

    private InstanceListFragment _listFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Create content from resource
        setContentView(R.layout.activity_instance_list);

        // Get ListFragment
        _listFragment = (InstanceListFragment) getSupportFragmentManager()
                .findFragmentById(R.id.instance_list_fragment);

        // Add Filter menu
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayShowCustomEnabled(true);
            actionBar.setCustomView(R.layout.actionbar_filter);
            final RadioGroup favorites = (RadioGroup) actionBar.getCustomView()
                    .findViewById(R.id.filter);
            if (favorites != null) {
                favorites.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {
                        if (checkedId == R.id.filter_favorites) {
                            _listFragment.filterFavorites();
                        } else {
                            _listFragment.clearFilter();
                        }
                    }
                });
            }
        }
        // Handle search queries
        if (getIntent() != null) {
            handleIntent(getIntent());
        }
    }
...
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果我已正确理解你的问题,请覆盖活动的onBackPressed()方法并处理类似的事情。

在favorites.setOnCheckedChangeListener中,在该活动中保存全局布尔变量。例如,

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.filter_favorites) {
isFav=true;
_listFragment.filterFavorites();

} else {
isFav=false;
_listFragment.clearFilter();
}
}

并覆盖onBackPressed()方法,如下所示。

@Override
public void onBackPressed() {
if(isFav){
    _listFragment.clearFilter();
}else{
    super.onBackPressed();
}
}

希望这有帮助。