Android RadioButton 的后退导航

Android back navigation for RadioButton

我有一个 actionBar,它在两个列表片段之间导航,分别称为 'All' 和 'Favorites'。在 actionBar 布局上,它们是 RadioButtons。 'All' 是数据条目列表,'Favorites' 是该列表的过滤子集。在 'Favorites' 时,我希望设备的后退按钮始终转到 'All'。我怎样才能做到这一点?下面是一些相关的代码,如果有帮助的话:

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());
        }
    }
...
}

提前致谢!

如果我没有正确理解你的问题,请覆盖 activity 的 onBackPressed() 方法并处理类似这样的事情。

在favorites.setOnCheckedChangeListener中,全局保存一个布尔变量,在那个activity中。例如,

@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();
}
}

希望对您有所帮助。