2015-11-27 157 views
0

我知道以前也有類似的問題,但是有沒有清楚易懂的例子來做到這一點。我通常所做的就是從Android Studio創建一個項目,並選擇一個包含導航的項目。但是在我打電話給我的下一個活動後,它不再有導航抽屜。我所能做的只是在工具欄的主要活動中添加一個後退按鈕。我只需要能夠從我所有的活動中調用導航抽屜,即使是那些在工具欄上有後退按鈕的抽屜。如何從另一個活動調用導航抽屜菜單

是否有最佳做法使抽屜菜單可調用,適用於不同的場景。例如

main activity with drawer -> 2nd activity with toolbar but has back button. How do you call the drawer menu? 
main activity with drawer -> 3rd activity with no toolbar. call navigation drawer thru swipe or buttons? 
+1

我從來不知道在軟件開發中的一個非常複雜的主題上的新功能是值得贊成的。特別是Android開發,它經歷了不同版本的不同版本兼容性問題和設計轉換。我不關心如此投票的要點,但請留下一個理由,爲什麼您對問題進行了低估,使其成爲一個更有價值的學習過程。請注意,並非所有的天才都可以在設計和編程概念中掌握所有這些不同的方法。我們所有人在某個時間點都是新手。 – TwoThumbSticks

回答

0

簡單,你可以通過具有基本活動,你可以從你希望它有DL的任何活動擴展實現這一目標。例如

public abstract class SampleBaseActivity extends AppCompatActivity { 

    protected abstract boolean isHome(); 

    private DrawerLayout drawerLayout; 

    @Override protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.drawer_layout); 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     if (getSupportActionBar() != null) { 
      if (!isHome()) { 
       getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back); 
      } else { 
       getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu); 

      } 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     } 
    } 

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

現在在每一個活動你喜歡的抽屜,而不是擴大這種activity正常AppCompatActivity

+0

對不起,新手問題,但我現在正在做什麼,只要我將MainActivity擴展到另一個活動它說NoBoringActionBarActivity}:java.lang.IllegalStateException:您需要使用Theme.AppCompat主題(或後代)與此活動。 – TwoThumbSticks

+0

然後您需要將AppCompatActivity更改爲您正在使用的任何活動。 – k0sh

1

基本上每個活動都有自己的動作條,並且每個動作條可以使用自己的抽屜式導航欄。所以如果你想要相同的導航抽屜。你可以使用Fragment。您可以使MainActivity具有Navigation Drawer並在Mainactivity中使用FrameLayout,然後替換Fragment。如果您希望每個活動都有單個導航抽屜。這不可能。