Java 如何在多个活动之间共享导航抽屉?

Java 如何在多个活动之间共享导航抽屉?,java,android,android-activity,android-navigation,Java,Android,Android Activity,Android Navigation,嗨,我正在为高中毕业做一个学校项目。该项目由一个Android应用程序组成,该应用程序的主要活动是一个导航抽屉。 现在,我已经学会了数千个关于这个论点的问题,但所有的答案都是关于使用片段的。我不想使用片段,因此如何在不同的活动之间共享导航抽屉 注:1)我使用了Android Studio提供的股票导航抽屉 2) 我不想共享MainActivity的工具栏,只想共享导航抽屉 谢谢。您需要使用抽屉创建BaseActivity,所有子活动都将扩展该BaseActivity public class B

嗨,我正在为高中毕业做一个学校项目。该项目由一个Android应用程序组成,该应用程序的主要活动是一个导航抽屉。 现在,我已经学会了数千个关于这个论点的问题,但所有的答案都是关于使用片段的。我不想使用片段,因此如何在不同的活动之间共享导航抽屉

注:1)我使用了Android Studio提供的股票导航抽屉

2) 我不想共享MainActivity的工具栏,只想共享导航抽屉


谢谢。

您需要使用抽屉创建BaseActivity,所有子活动都将扩展该BaseActivity

public class BaseActivity extends AppCompatActivity  {    
    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(R.layout.activity_base);
        // Base activity view with navigation drawer

        mainContener = (RelativeLayout) findViewById(R.id.mainContener);
        // MainCOntener where you want to add your child activity view
        // with toolbar and all
        getLayoutInflater().inflate(layoutResID, mainLayout);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setOnClickListener(this);

        findViewById(R.id.linearLayout_home).setOnClickListener(this);
        ...
        ...

        getDrawerData();
    }

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

    }


  }
创建这样的子活动

public class Home extends BaseActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        }
    }
每次设置ContentView()时; 来自子活动的调用,该视图(或类似R.Layout.home的布局)将在baseactivity的contenner(类似R.Layout.base_activity)的视图组中膨胀

欲知详情 你可以使用谷歌IO应用程序代码,他们也使用BaseActivity概念

然后,您在每个活动中都有一个包含抽屉的ClickListener,您不想使用fragment,即使它为这类事情提供了一个非常灵活的实现,并且推荐了这样做的方法。您应该删除
setContentView(R.layout.activity\u base)将导致自定义
setContentview
中的代码执行两次