多个活动的导航抽屉,无需选择导航抽屉活动

     2023-04-13     254

关键词:

【中文标题】多个活动的导航抽屉,无需选择导航抽屉活动【英文标题】:Navigation Drawer For multiple Activities Without Selecting Navigation Drawer activity 【发布时间】:2020-06-02 01:14:37 【问题描述】:

我是安卓新手。我想实现一个由项目列表组成的导航抽屉,单击它会打开一个新活动。基本上是所有活动的导航抽屉。当我从导航抽屉中选择一个项目时,特定的活动 opens.navigation 抽屉代码是通过采取空活动来实现的。我想在所有活动中实现导航抽屉功能,这些活动被视为空活动,因为活动已经具有一些功能以及此功能,导航抽屉功能也可以工作。请帮帮我。

这是activity_header文件

<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:layout_
android:layout_
android:id="@+id/drawer"
tools:context=".MainActivity">
<android.support.design.widget.NavigationView
    app:headerLayout="@layout/header"
    android:layout_
    android:layout_
    android:background="@color/white"
    app:menu="@menu/drawermenu"
    android:layout_gravity="start"
    android:id="@+id/navigationView"
    >
   </android.support.design.widget.NavigationView>
 </android.support.v4.widget.DrawerLayout>

这是我的主要活动

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/gridview"
   android:layout_
   android:layout_
   android:columnWidth="90dp"
   android:numColumns="2"
   android:verticalSpacing="10dp"
   android:horizontalSpacing="10dp"
   android:stretchMode="columnWidth"
   android:gravity="center"
   android:layout_marginTop="30dp"/>

这是 Header Activity java 代码

public class HeaderActivity extends AppCompatActivity 


protected DrawerLayout myDrawerLayout;
protected ActionBarDrawerToggle toggle;
protected NavigationView navigationView;


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



    myDrawerLayout=(DrawerLayout)findViewById(R.id.drawer);
    navigationView=(NavigationView) findViewById(R.id.navigationView);
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() 
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) 

            Log.e("log_cat", "Error Response" + "Error");

            switch (menuItem.getItemId())
            
                case R.id.dashboard:
                    Toast.makeText(HeaderActivity.this,"Dashboard Clicked",Toast.LENGTH_LONG).show();
                    break;

                case R.id.devotional:
                    Toast.makeText(HeaderActivity.this,"devotional Clicked",Toast.LENGTH_LONG).show();
                    break;

                case R.id.inspiration:
                    Toast.makeText(HeaderActivity.this,"inspiration Clicked",Toast.LENGTH_LONG).show();
                    break;

                case R.id.happy:
                    Toast.makeText(HeaderActivity.this,"happy Clicked",Toast.LENGTH_LONG).show();
                    break;

                case R.id.sad:
                    Toast.makeText(HeaderActivity.this,"sad Clicked",Toast.LENGTH_LONG).show();
                    break;

                case R.id.love:
                    Toast.makeText(HeaderActivity.this,"love Clicked",Toast.LENGTH_LONG).show();
                    break;


            
            return false;
        
    );
    toggle = new ActionBarDrawerToggle(
            this,
            myDrawerLayout,
            R.string.open,
            R.string.close
    ) 
        public void onDrawerClosed(View view) 
            //Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
        

        public void onDrawerOpened(View drawerView) 
            //Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
        
    ;
    myDrawerLayout.addDrawerListener(toggle);
    toggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    // gridview.setAdapter(i);



@Override
public boolean onOptionsItemSelected (MenuItem item) 
    if (toggle.onOptionsItemSelected (item)) 
        return true;
    
    return super.onOptionsItemSelected(item);


这是我的主要活动 java 代码

公共类 MainActivity 扩展 HeaderActivity

GridView grid;
public static String[] osNameList = 
        "Devotional",
        "Inspirational",
        "Happy",
        "Sad",
        "Love"

 ;
public static int[] osImages = 
        R.drawable.devotional,
        R.drawable.inspirational,
        R.drawable.happy,
        R.drawable.sad,
        R.drawable.love

;


@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    getLayoutInflater().inflate(R.layout.activity_main, myDrawerLayout);
    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this, osNameList, osImages));


在此代码中,setNavigationItemSelectedListener 在 mainactivity 中不起作用,但在 Grid 上的 setOnClickListener 正在起作用。当我们点击任何导航菜单元素时,它会移动到该活动。

【问题讨论】:

【参考方案1】:

如果您想在所有页面中包含NavigationDrawer,则应将Fragment 用于功能页面。 想看例子可以看here

另外,我希望您推荐将Android Jetpack Navigation Component 与NavigationUIDrawerLayout 一起使用。

【讨论】:

【参考方案2】:

有两种方法可以在您可以使用片段的所有活动中实现抽屉,或者您可以在基础活动中创建一个 NavigationDrawer 并在您想要的地方实现它。 Same Navigation Drawer in different Activities

【讨论】:

具有多个活动的导航抽屉。 - 空指针异常

】具有多个活动的导航抽屉。-空指针异常【英文标题】:NavigationDrawerwithMultipleactivities.-NullPointerException【发布时间】:2015-03-0401:48:48【问题描述】:我正在通过AndroidStudio开发我的移动应用程序。我的应用程序的启动器活动是Spla... 查看详情

多个活动上的 Android 导航抽屉

】多个活动上的Android导航抽屉【英文标题】:AndroidNavigationDraweronmultipleActivities【发布时间】:2013-09-1222:13:54【问题描述】:有没有办法只配置一次NavigationDrawer,并在多个Activity上显示?【问题讨论】:Here是一个不错的教程。见... 查看详情

在导航抽屉上调用不是片段活动的活动

】在导航抽屉上调用不是片段活动的活动【英文标题】:CallanActivitythatisnotafragmentactivityonNavigationDrawer【发布时间】:2022-01-1013:07:02【问题描述】:我是AndroidStudio的新手。我有一个导航抽屉,我试图调用一个不是片段活动的活动... 查看详情

使用继承的活动导航抽屉实现

】使用继承的活动导航抽屉实现【英文标题】:Navigationdrawerimplementationwithactivitiesusinginheritance【发布时间】:2016-05-2015:35:15【问题描述】:在我的应用程序中,我必须对所有活动使用导航抽屉。所以我创建了一个名为DrawerActivity... 查看详情

所有活动中的Android导航抽屉[重复]

】所有活动中的Android导航抽屉[重复]【英文标题】:AndroidNavdrawerinallactivities[duplicate]【发布时间】:2018-05-0901:19:49【问题描述】:如何在所有活动中显示我的导航抽屉在androidstudio中创建一个新项目并有一个导航抽屉活动后,我... 查看详情

将导航抽屉活动扩展到其他活动

】将导航抽屉活动扩展到其他活动【英文标题】:extendingnavigationdraweractivitytootheractivities【发布时间】:2014-04-0322:35:51【问题描述】:我正在尝试创建一个导航抽屉活动,以便我可以扩展该活动并按照此问题Link中给出的答案在所... 查看详情

如何从导航抽屉启动活动?

】如何从导航抽屉启动活动?【英文标题】:HowtolaunchactivityfromNavigationDrawer?【发布时间】:2014-06-3020:25:10【问题描述】:所以我在这里搜索了有关导航抽屉的分配,当我被指向另一个人问题的答案中的教程时。我这样做了。我... 查看详情

在所有活动问题中显示导航抽屉

】在所有活动问题中显示导航抽屉【英文标题】:DisplayingNavigationdrawerinallactivitiesproblem【发布时间】:2020-04-2011:54:58【问题描述】:我正在制作一个包含不同活动的导航抽屉,我想在所有活动中显示相同的导航抽屉,我采用相同... 查看详情

如何在导航抽屉中添加活动

】如何在导航抽屉中添加活动【英文标题】:HowtoaddactivityinNavigationDrawer【发布时间】:2021-07-0514:55:06【问题描述】:我正在尝试在我的导航抽屉中添加一个活动。我已经在我的主要活动中加入了带有项目id的switchcase的意图。我... 查看详情

导航抽屉和Android中的活动

】导航抽屉和Android中的活动【英文标题】:NavigationDrawerandwithActivityinAndroid【发布时间】:2014-10-2911:46:33【问题描述】:我正在尝试thistutorial.中给出的导航抽屉(幻灯片菜单)上述链接和我的不同之处在于,我尝试调用活动而不... 查看详情

更新基本导航抽屉活动的参数

】更新基本导航抽屉活动的参数【英文标题】:Updateanargumentofabasicnavigationdraweractivity【发布时间】:2021-02-1615:35:41【问题描述】:上下文:我想在他登录后将userId传递给片段UserFragment。我使用了一个新项目Android类型“导航抽屉... 查看详情

通过单击导航抽屉上的项目打开虚假活动

】通过单击导航抽屉上的项目打开虚假活动【英文标题】:FalseActivityopensbyclickingonanItemontheNavigationdrawer【发布时间】:2017-12-3013:46:07【问题描述】:我编写了一个测验应用程序。我还有一个导航抽屉,其中包含以下项目:主页、... 查看详情

android studio 不创建导航抽屉活动

】androidstudio不创建导航抽屉活动【英文标题】:androidstudiodoesn\'tcreatenavigationdraweractivity【发布时间】:2016-03-1022:46:20【问题描述】:我只想创建一个导航抽屉活动。当我右键单击应用程序>新建>活动>导航抽屉活动时,没... 查看详情

在导航抽屉项目单击上启动新活动

】在导航抽屉项目单击上启动新活动【英文标题】:Startinganewactivityonnavigationdraweritemclick【发布时间】:2016-07-2714:20:57【问题描述】:我知道这是一个经常被问到的问题,但是在阅读了有关堆栈溢出的许多问题和解决方案后,我... 查看详情

如何在不使用片段的情况下访问所有活动中的导航抽屉?

】如何在不使用片段的情况下访问所有活动中的导航抽屉?【英文标题】:Howtoaccessnavigationdrawerinallactivitieswithoutusingfragments?【发布时间】:2014-03-2907:27:47【问题描述】:我想在所有活动中访问导航抽屉。我不想使用片段。相反... 查看详情

我无法为我的应用程序创建导航抽屉活动

】我无法为我的应用程序创建导航抽屉活动【英文标题】:IamnotabletocreateNavigationDraweractivityformyapplication【发布时间】:2020-10-1319:02:15【问题描述】:enterimagedescriptionhere当我右键单击应用>新建>活动>导航抽屉活动时,什么... 查看详情

带有活动和子片段的导航抽屉

】带有活动和子片段的导航抽屉【英文标题】:NavigationdrawerwithActivityandchildFragments【发布时间】:2014-04-1412:41:12【问题描述】:我有一个ActivityA、一个ListFragmentP和2FragmentsQ和R。应用程序启动时,会创建A,它会加载P。根据用户点... 查看详情

如何实现一个滑动整个活动内容的 Android 导航抽屉?

】如何实现一个滑动整个活动内容的Android导航抽屉?【英文标题】:HowcanIimplementanAndroidnavigationdrawerwhichslidewholecontentofactivity?【发布时间】:2017-02-1603:09:43【问题描述】:请任何人建议我如何实现导航抽屉滑动完整屏幕的活动。... 查看详情