Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中创建NavigationDrawer,而不是在活动中_Java_Android_Navigation Drawer_Toolbar - Fatal编程技术网

Java 在片段中创建NavigationDrawer,而不是在活动中

Java 在片段中创建NavigationDrawer,而不是在活动中,java,android,navigation-drawer,toolbar,Java,Android,Navigation Drawer,Toolbar,想知道如何在片段(在本例中是my HomeFragment)中而不是在活动中创建NavigationDrawer。我已经了解了如何在活动(如MainActivity)中创建NavigationDrawer的所有内容,但我的目标是仅为HomeFragment创建NavigationDrawer。不希望任何其他片段包含它。抽屉菜单将包含编辑配置文件、设置和注销。下面我已经发布了我所做的。。。有更好的方法吗?代码似乎有点笨拙 我看过的每一个视频,每一篇帖子都是关于在活动中创建NavigationDra

想知道如何在片段(在本例中是my HomeFragment)中而不是在活动中创建NavigationDrawer。我已经了解了如何在活动(如MainActivity)中创建NavigationDrawer的所有内容,但我的目标是仅为HomeFragment创建NavigationDrawer。不希望任何其他片段包含它。抽屉菜单将包含编辑配置文件、设置和注销。下面我已经发布了我所做的。。。有更好的方法吗?代码似乎有点笨拙

我看过的每一个视频,每一篇帖子都是关于在活动中创建NavigationDrawer的,所以我想知道片段的代码是什么样子的。我试着像你做运动一样做,但不起作用

下面是我的HomeFragment.java和fragment_home.xml


fragment_home.xml


    <?xml version="1.0" encoding="utf-8"?>
    <androidx.drawerlayout.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:context=".Fragment.HomeFragment"
        tools:openDrawer="start">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <com.google.android.material.appbar.AppBarLayout
                    android:id="@+id/bar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="?android:attr/windowBackground">

                    <androidx.appcompat.widget.Toolbar
                        android:id="@+id/toolbar_home_fragment"
                        android:layout_width="match_parent"
                        android:layout_height="?attr/actionBarSize"
                        android:background="?android:attr/windowBackground"
                        android:elevation="4dp"
                        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                        <RelativeLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content">

                            <ImageView
                                android:id="@+id/events_logo_main_activity"
                                android:layout_width="180dp"
                                android:layout_height="45dp"
                                android:layout_centerInParent="true"
                                android:layout_marginTop="10dp"
                                android:src="@drawable/events_logo_black_max_size" />

                            <ImageView
                                android:id="@+id/camera_create_an_event_main_activity"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_alignParentEnd="true"
                                android:layout_centerInParent="true"
                                android:layout_marginEnd="11dp"
                                android:src="@drawable/ic_camera_create_events_home_fragment_black" />

                            <ImageView
                                android:id="@+id/three_bars_settings_main_activity"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_alignParentStart="true"
                                android:layout_centerInParent="true"
                                android:src="@drawable/ic_three_bars_settings_home_fragment_black" />

                        </RelativeLayout>

                    </androidx.appcompat.widget.Toolbar>

                </com.google.android.material.appbar.AppBarLayout>

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/recycler_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/bar">

                </androidx.recyclerview.widget.RecyclerView>

            </LinearLayout>

            <ProgressBar
                android:id="@+id/progress_circular"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true" />

        </RelativeLayout>

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/header"
            app:itemTextColor="@color/colorPrimaryAqua50"
            app:menu="@menu/drawer_menu" />

    </androidx.drawerlayout.widget.DrawerLayout>



fragment_home.xml
HomeFragment.java

package com.e.events.Fragment;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.e.events.Adapter.PostAdapter;
import com.e.events.EditProfileActivity;
import com.e.events.MainActivity;
import com.e.events.Model.Post;
import com.e.events.PostActivity;
import com.e.events.R;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class HomeFragment extends Fragment {

    private ImageView options;

    private DrawerLayout drawer;

    ProgressBar progressBar;

    private RecyclerView recyclerView;
    private PostAdapter postAdapter;
    private List<Post> postLists;

    private ImageView camera_create_event;

    private List<String> followingList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);

        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        linearLayoutManager.setReverseLayout(true);
        linearLayoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager(linearLayoutManager);
        postLists = new ArrayList<>();
        postAdapter = new PostAdapter(getContext(), postLists);
        recyclerView.setAdapter(postAdapter);

        progressBar = view.findViewById(R.id.progress_circular);

        options = view.findViewById(R.id.three_bars_settings_main_activity);

        options.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                } else {
                    drawer.openDrawer(GravityCompat.START);
                }
            }
        });

        Toolbar toolbar = view.findViewById(R.id.toolbar_home_fragment);

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

        camera_create_event = view.findViewById(R.id.camera_create_an_event_main_activity);

        camera_create_event.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), PostActivity.class);
                startActivity(intent);
            }
        });

        checkFollowing();

        return view;
    }

    private void checkFollowing() {
        followingList = new ArrayList<>();

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Follow")
                .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                .child("following");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                followingList.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    followingList.add(snapshot.getKey());
                }

                readPosts();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

    private void readPosts() {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Posts");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                postLists.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    Post post = snapshot.getValue(Post.class);
                    for (String id : followingList) {
                        if (post.getPublisher().equals(id)) {
                            postLists.add(post);
                        }
                    }
                }

                postAdapter.notifyDataSetChanged();
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}
package com.e.events.Fragment;
导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.ActionBarDrawerToggle;
导入androidx.appcompat.widget.Toolbar;
导入androidx.core.view.GravityCompat;
导入androidx.drawerlayout.widget.drawerlayout;
导入androidx.fragment.app.fragment;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入com.e.events.Adapter.PostAdapter;
导入com.e.events.EditProfileActivity;
导入com.e.events.main活动;
导入com.e.events.Model.Post;
导入com.e.events.PostActivity;
导入com.e.events.R;
导入com.google.android.material.navigation.NavigationView;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入java.util.ArrayList;
导入java.util.List;
公共类HomeFragment扩展了片段{
私有图像视图选项;
私人抽屉;
ProgressBar ProgressBar;
私人回收站;
私人后适配器后适配器;
私人名单张贴名单;
私有ImageView摄像机\u创建\u事件;
私人名单;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u home,container,false);
recyclerView=view.findViewById(R.id.recycler\u视图);
recyclerView.setHasFixedSize(true);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);
postLists=newarraylist();
postAdapter=新的postAdapter(getContext(),PostList);
recyclerView.setAdapter(后适配器);
progressBar=view.findViewById(R.id.progress\u循环);
选项=view.findViewById(R.id.three\u bars\u settings\u main\u activity);
options.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(抽屉isDrawerOpen(重力压缩机启动)){
抽屉。关闭抽屉(重力压缩机启动);
}否则{
drawer.openDrawer(GravityCompat.START);
}
}
});
Toolbar Toolbar=view.findviewbyd(R.id.Toolbar\u home\u片段);
抽屉=view.findViewById(R.id.drawer\U布局);
camera\u create\u event=view.findViewById(R.id.camera\u create\u event\u main\u活动);
camera\u create\u event.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=新的Intent(getActivity(),PostActivity.class);
星触觉(意向);
}
});
checkFollowing();
返回视图;
}
私有void checkFollowing(){
followList=新的ArrayList();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“Follow”)
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.儿童(“以下”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
下面的列表。清除();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
添加(snapshot.getKey());
}
readPosts();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
私有无效读帖子(){
DatabaseReference=FirebaseDatabase.getInstance().getReference(“Posts”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
postLists.clear();
对于(Da)
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,
            R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawerLayout.addDrawerListener(toggle);