Важно отметить, что вам не обязательно создавать отдельное действие для каждого экрана, который пользователь может видеть в вашем приложении.Если вы хотите изменить только «содержимое» экрана, но оставить ту же базовую панель инструментов, панель навигации и окружающий макет «рамки», обычно лучше (и более эффективно) использовать фрагмент вместо.Таким образом, вы можете делать почти все то же самое, что вы можете делать с отдельными действиями, но вам нужно создать Навигатор только один раз, когда приложение открыто.Google теперь рекомендует создавать приложения таким образом (как вы можете видеть в в этом посте ), поскольку они лучше / более гибки в обмене данными между экранами, чем действия, среди прочих причин ...
Если вы действительно хотите создать несколько действий с одним и тем же выдвижным ящиком, вам следует создать отдельный метод и файл макета специально для этого ящика, а затем внедрить их во все создаваемые вами действия.Вот общий пример (используемые представления / идентификаторы / атрибуты на самом деле не существуют, они просто существуют для демонстрации - замените их тем, что вы используете в своем приложении):
a.Напишите отдельный файл макета, содержащий содержимое панели навигации ...
[res / layout / layout_drawer.xml]
<DrawerViewSomethingIdk
android:layout_height="match_parent"
android:layout_width="250dp">
<DrawerItemThing
android:id="@+id/drawerItemId"
android:layout_height="24dp"
android:layout_width="match_parent"
android:text="This is a drawer item." />
</DrawerViewSomethingIdk>
b.Используйте тег <include>
, чтобы добавить макет к каждому макету, который вы создаете;более конкретное объяснение того, как использовать этот тег, можно найти здесь .
<RootLayoutView
android:layout_height="match_parent"
android:layout_width="match_parent">
<include layout="@layout/layout_drawer"/>
<!-- everything else in your activity -->
</RootLayoutView>
c.Напишите static метод для привязки представлений в ящике к каждому Intent
, который вы хотите, чтобы они запускали.
[NavigationDrawerUtils.java]
public static method bindIntents(Activity activity) {
DrawerItemThing aDrawerItemView = activity.findViewById(R.id.drawerItemId);
aDrawerItemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// start the activity
}
});
// ... and so on for every drawer item you create
}
d.Вызывайте метод в каждом упражнении сразу после надувания файла макета.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1_layout);
NavigationDrawerUtils.bindIntents(this);
}