将默认导航抽屉添加到NewActivity

问题描述 投票:1回答:1

我用3.5.1版本的默认抽屉创建了一个新项目。我正在创建新的Activity(ProfileActivity),我也想要MainActivity的抽屉。

当我尝试从导航抽屉中打开ProfileActivity时,它正在打开HomeFragment。是的,我给了正确的ID。

[试图将其完成几个月,但没有发生,这次可能会放弃。他们到处都提供有关碎片的解决方案。

我尝试过]

ProfileActivity

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inflater = (LayoutInflater) this
                .getSystemService( Context.LAYOUT_INFLATER_SERVICE);
        View contentView = inflater.inflate(R.layout.activity_profile, null, false);
        final TextView textView = contentView.findViewById( R.id.text_gallery );
        drawer.addView(contentView, 0);
    }
}

并使抽屉受保护

当我尝试从导航抽屉中打开ProfileActivity时,它正在打开HomeFragment。是的,我给了正确的ID

<item
            android:id="@+id/profileActivity"
            android:icon="@drawable/ic_menu_manage"
            android:title="Profile" />

我的MainActivity如下

package com.example.iqhut;

import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import android.view.View;

import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.view.ViewCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

import com.google.android.material.navigation.NavigationView;

import androidx.drawerlayout.widget.DrawerLayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.Menu;
import android.widget.RelativeLayout;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private AppBarConfiguration mAppBarConfiguration;
    protected DrawerLayout drawer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        Toolbar toolbar = findViewById( R.id.toolbar );
        setSupportActionBar( toolbar );
        FloatingActionButton fab = findViewById( R.id.fab );
        fab.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make( view, "Replace with your own action", Snackbar.LENGTH_LONG )
                        .setAction( "Action", null ).show();
            }
        } );
        drawer = findViewById( R.id.drawer_layout );
        NavigationView navigationView = findViewById( R.id.nav_view );
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
                R.id.nav_tools, R.id.nav_share, R.id.nav_send, R.id.profileActivity )
                .setDrawerLayout( drawer )
                .build();
        NavController navController = Navigation.findNavController( this, R.id.nav_host_fragment );
        NavigationUI.setupActionBarWithNavController( this, navController, mAppBarConfiguration );
        NavigationUI.setupWithNavController( navigationView, navController );

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate( R.menu.main, menu );
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController( this, R.id.nav_host_fragment );
        return NavigationUI.navigateUp( navController, mAppBarConfiguration )
                || super.onSupportNavigateUp();
    }
}

我用3.5.1版本的默认抽屉创建了一个新项目。我正在创建新的Activity(ProfileActivity),我也想要MainActivity的Drawer。当我尝试打开时正在打开HomeFragment ...

android android-studio navigation-drawer
1个回答
0
投票

如果要禁用DrawerLayout,则没有理由使用单独的活动。相反,您可以在个人资料目标位置上单击listen for navigation events并禁用DrawerLayout:

© www.soinside.com 2019 - 2024. All rights reserved.