我有一个导航抽屉,我使用选择器获取列表中的高级别项。
<item
android:state_activated="true"
android:drawable="@color/pressed_color"/>
<item
android:drawable="@color/default_color" />问题是,我重写了反向按钮,将片段更改为我的主要元素,如下所示:
@Override
public void onBackPressed()
{
onNavigationDrawerItemSelected(0);
onSectionAttached(1);
restoreActionBar();现在,当我按下它改变了片段,但是突出显示的项目停留在我最后一次点击time.How的地方,我能实现也改变突出显示位置吗?使用一些类似于更改文本状态的代码,但是我用适配器创建导航抽屉元素.(我使用Android示例)
@Override
public void onNavigationDrawerItemSelected(final int position) {
// update the main content by replacing fragments
final FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, KedvencekFragment.newInstance(position + 1))
// .addToBackStack(null)
.commit();
if(position==0)
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
fragmentManager.beginTransaction()
.replace(R.id.container, KedvencekFragment.newInstance(position + 1))
// .addToBackStack(null)
.commit();
}
}, 250);
}和` public void onSectionAttached(int号){ switch (number) { case 1: mTitle = getString(R.string.title_section1);
break;
case 2:
mTitle = getString(R.string.title_section2);
break;
case 3:
mTitle = getString(R.string.title_section3);
break;
case 4:
mTitle = getString(R.string.title_section4);
break;
case 5:
// mTitle = getString(R.string.title_section5);
break;
case 6:
mTitle = getString(R.string.title_section6);
break;
}
}`发布于 2014-11-27 16:28:34
我找到了!必须将selectItem()更改为public,然后在onBackPressed中这样调用它!
@Override
public void onBackPressed()
{
if(mTitle!=getString(R.string.title_section1)) {
onNavigationDrawerItemSelected(0);
onSectionAttached(1);
mNavigationDrawerFragment.selectItem(0);
restoreActionBar();
}
else{
super.onBackPressed();
}
}发布于 2014-11-27 15:21:31
编辑:
您可以在活动中访问NavigationDrawerFragment,只需将NavigationDrawerFragment的selectItem(int position)方法公开,如下所示:
...
publicvoid selectItem(int position) {
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
}
...然后在您的onNavigationDrawerItemSelected方法中:
@Override
public void onNavigationDrawerItemSelected(final int position) {
// update the main content by replacing fragments
final FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, KedvencekFragment.newInstance(position + 1))
// .addToBackStack(null)
.commit();
if(position==0)
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
fragmentManager.beginTransaction()
.replace(R.id.container, KedvencekFragment.newInstance(position + 1))
// .addToBackStack(null)
.commit();
}
}, 250);
}
navigationDrawerFragment.selectItem(position);
}https://stackoverflow.com/questions/27171479
复制相似问题