簡體   English   中英

將工具欄主導航按鈕設置為跟隨Backstack,Android

[英]Set Toolbar Home Navigation Button to Follow backstack, Android

我已經設置了一個工具欄,並添加了一個主頁導航按鈕,如下所示;

Toolbar toolbar;
toolbar = (Toolbar) findViewById(R.id.toolbar_home);

//Setup toolbar
toolbar.setTitle("Home");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    toolbar.setTitleTextColor(getResources().getColor(R.color.icons,null));
}else{
    toolbar.setTitleTextColor(getResources().getColor(R.color.icons));
}

setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
} else {
    Log.w("Home", "toolbar null");
}

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //Navigate backwards as android back button
    }
});

我想要當我按下工具欄上的后退按鈕時,它作為Android后退按鈕在后退之后向后導航。 在此處輸入圖片說明

在活動中添加此方法:

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        if(item.getItemId() == android.R.id.home){
            onBackPressed();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

我長期以來一直在關注此問題,但尚未發現任何問題。

HomeFragment:第一次加載的第一個片段

getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
                @Override
                public void onBackStackChanged() {
                    HomeFragment currentHomeFragment = null;
                    currentHomeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("HOME_FRAGMENT");
                    if (currentHomeFragment != null && currentHomeFragment.isVisible()) {
                        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                        toggle.syncState();
                        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                drawer.openDrawer(GravityCompat.START);
                            }
                        });
                    } else {
                        if (getFragmentManager().getBackStackEntryCount() > 1) {
                            getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
                            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    getFragmentManager().popBackStackImmediate();
                                }
                            });

                        } else {
                            getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                            toggle.syncState();
                            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    drawer.openDrawer(GravityCompat.START);
                                }
                            });
                        }
                    }
                }
            });

如果您使用的是android.support.v7.widget.Toolbar,請將以下代碼添加到您的AppCompatActivity中:

@Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

在您的onClick中寫onBackPressed(); 清單中

    <activity android:name=".XYZActivity"
              android:parentActivityName=".MainActivity" />
  1. MainActivity onCreate()方法中的設置工具欄。

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_home); toolbar.setTitle("Activity Name"); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); 
  2. 通過在MainActivity Level中實現以下方法來設置向后導航。

    @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } }

  3. 效果很好..

@Rajesh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM