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