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()
以夸张的观点。。就这些
希望对你有帮助 您可以在onsetContentView
中以编程方式创建所有必要的控件。您可以在onsetContentView
中以编程方式创建所有必要的控件。。。