Android 如何使用BaseActivity跨所有活动创建navigationdrawer?

Android 如何使用BaseActivity跨所有活动创建navigationdrawer?,android,android-activity,navigation-drawer,Android,Android Activity,Navigation Drawer,我正在创建一个BaseActivity.java类来包含导航视图和工具栏 BaseActivity.java public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ private Toolbar toolbar; private DrawerLayout drawerLayout; private Ac

我正在创建一个
BaseActivity.java
类来包含导航视图和工具栏

BaseActivity.java

public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

    private Toolbar toolbar;
    private DrawerLayout drawerLayout;
    private ActionBarDrawerToggle actionBarDrawerToggle;
    private NavigationView navigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

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

        //OTHER CODES TO SET UP NAVIGATION VIEW...


    }
}
我正在创建一个activity_base.xml文件,其中包含
DrawerLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical"
        tools:context="com.example.sumit.movie.MovieActivity">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

        </android.support.design.widget.AppBarLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/fragment_container">   ***MY PLACEHOLDER FRAGMENT***

        </FrameLayout>


    </LinearLayout>



    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_movie"
        app:menu="@menu/activity_movie_drawer" />

</android.support.v4.widget.DrawerLayout>

关于如何做到这一点。
他们说创建一个
BaseActivity.java
类,并扩展这个类来创建其他活动。
但是我们是否也必须为这个活动创建一个xml文件,它将创建导航视图和工具栏,从而在所有活动中保持一致

如果我不创建
activity\u base.xml
,而只是创建类,我不需要编写REDUNDENT代码来设置每个activity的xml文件中的导航抽屉和工具栏吗


请帮助我如何做到这一点。我是android新手。

对于这个用例,您可能不需要为每个页面都使用activity xml,您只需要有一个扩展BaseActivity的activity类,它可以自定义activity/toolbar/nav draw,然后您就可以将常用函数拉到基本activity。因此,BaseActivity在创建时在其中进行设置,然后根据每个活动类进行自定义。

对于此用例,您可能不需要为每个页面都使用活动xml,您只需要有一个扩展BaseActivity的活动类,该活动类可自定义活动/工具栏/导航绘图,然后您就可以将常用函数拉到基础上活动。因此,BaseActivity在创建时在其中进行设置,然后根据每个活动类进行定制。

我遇到了类似的问题。但是,在我的例子中,有自定义的NavigationDrawer和ActivityLayout用于数据绑定。解决方案是对NavigationDrawer使用相同的viewModel,并为每个活动创建布局。创建抽象BaseDrawerActivity,它具有获取布局资源Id的抽象方法。每个派生活动都将指定自己的资源。

我遇到了类似的问题。但是,在我的例子中,有自定义的NavigationDrawer和ActivityLayout用于数据绑定。解决方案是对NavigationDrawer使用相同的viewModel,并为每个活动创建布局。创建抽象BaseDrawerActivity,它具有获取布局资源Id的抽象方法。每个派生活动都将指定自己的资源。

只需创建一个活动,该活动将扩展NavigationDrawerActivity并设置该活动的所有功能,如onclick listener setting TextView和all。。现在,如果你想让一个活动有导航抽屉,你只需要扩展那个扩展了NavigationDrawerActivity的活动,而不是使用setContentView,你必须使用

   addview() 
以夸张的观点。。就这些


希望对你有帮助

只需创建一个活动,该活动将扩展NavigationDrawerActivity,并设置该活动的所有功能,如onclick listener设置文本视图和all。。现在,如果你想让一个活动有导航抽屉,你只需要扩展那个扩展了NavigationDrawerActivity的活动,而不是使用setContentView,你必须使用

   addview() 
以夸张的观点。。就这些


希望对你有帮助

您可以在on
setContentView
中以编程方式创建所有必要的控件。您可以在on
setContentView
中以编程方式创建所有必要的控件。。。