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();
}
}
希望对您有所帮助。
我有一个 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();
}
}
希望对您有所帮助。