2017-04-21 37 views
0

我已經設置了一個工具欄並添加了一個主頁導航按鈕,如下所示;設置工具欄首頁導航按鈕跟隨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 
    } 
}); 

我想要當我按下工具欄的後退按鈕後,它向後導航後面的backstack作爲android後退按鈕。 enter image description here

回答

0

在活動添加這個方法:

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

謝謝,非常完美 –

0

我從很長一段時間之後這一點,沒有發現任何問題呢。

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); 
           } 
          }); 
         } 
        } 
       } 
      }); 
0

如果您正在使用android.support.v7.widget.Toolbar此代碼添加到您的AppCompatActivity:在

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

你寫的onClick onBackPressed();清單中

<activity android:name=".XYZActivity" 
       android:parentActivityName=".MainActivity" /> 
0
  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一級執行以下方法設置背面導航。

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

  3. 效果很好..

@Rajesh