java - 主页按钮在旋转时从抽屉图标变为向上按钮 - 仅当抽屉导航打开时

标签 java android android-fragments android-actionbar navigation-drawer

我在我的应用程序中实现了一个抽屉式导航栏,大部分情况下它似乎工作正常。

我将主页按钮设置为抽屉导航图标(汉堡包),这在正常旋转过程中持续存在。如图 1(人像)和图 2(旋转后的风景)所示。 Image 1

Image 2

但是,如果我打开抽屉导航,然后旋转屏幕,然后关闭抽屉导航,主页按钮会变为向上按钮,如图 3 所示。 Image 3

我曾尝试改变周围的事物,使其始终保持汉堡包图标,但没有成功。

我的 MainActivity 代码如下。

public class MainActivity extends AppCompatActivity {
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
Toolbar toolbar;
private String mDrawerTitle;
private String mTitle;
ActionBarDrawerToggle mDrawerToggle;
private static int sNavPosition = 0;
private static final String NAV_POSITION_KEY = "navKey";
private static final String TAG = MainActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDrawerTitle = getTitle().toString();
    mTitle = getTitle().toString();
    mNavigationDrawerItemTitles = getResources().getStringArray(R.array.drawer_fragment_items);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    setUpToolbar();
    NavDrawerItem[] navDrawerItems = new NavDrawerItem[4];

    navDrawerItems[0] = new NavDrawerItem(getString(R.string.nav_home));
    navDrawerItems[1] = new NavDrawerItem(getString(R.string.nav_aims));
    navDrawerItems[2] = new NavDrawerItem(getString(R.string.nav_arttrail));
    navDrawerItems[3] = new NavDrawerItem(getString(R.string.nav_submission));

    DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.drawer_list_item,navDrawerItems);
    View header = getLayoutInflater().inflate(R.layout.drawer_header,null);
    mDrawerList.addHeaderView(header);
    mDrawerList.setAdapter(adapter);
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.addDrawerListener(mDrawerToggle);
    setUpDrawerToggle();
    if (savedInstanceState != null && savedInstanceState.containsKey(NAV_POSITION_KEY)){
        sNavPosition = savedInstanceState.getInt(NAV_POSITION_KEY);
    }
    new DrawerItemClickListener().selectItem(sNavPosition);
}

private void setUpDrawerToggle(){
    mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,toolbar,R.string.app_name,R.string.app_name);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    mDrawerToggle.setDrawerIndicatorEnabled(true);
    mDrawerToggle.syncState();
}



@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

private void setUpToolbar(){
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

}



@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    outState.putInt(NAV_POSITION_KEY,sNavPosition);
}

我已经排除了关于导航点击监听器的不必要代码。

如有任何帮助或建议,我们将不胜感激。谢谢。

最佳答案

尝试删除 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle.setDrawerIndicatorEnabled(true); 来自你的
setUpDrawerToggle();方法

Edit: setDisplayHomeAsUpEnabled(false) hides the default back button

关于java - 主页按钮在旋转时从抽屉图标变为向上按钮 - 仅当抽屉导航打开时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677186/

相关文章:

java - 动态生成jsf表单问题

java - 如何将元素固定到底部

android - 在抽屉导航中单击返回时操作栏上的双项

java - 验证用户输入,检查输入是否为正数而不是字符串

java - 等到任务完成

java - Java 8 Stream.parallel 和 Scala 特征 Parallelized.par 有什么区别

Android:强制更新布局

Android Studio 编译原生代码显示 "fcntl(): Bad file descriptor"

java - 当我旋转 Android 手机时,Fragment 中的自定义 ListView 就会出现

android - 带有 fragment 的布局设置