我想在 Fragment class 到 Home class 中使用变量
I want to use variable in Fragment class to Home class
我想在片段 class 中使用 postRecyclerView 变量到主页 class..
因为我想在添加post时滚动位置。但在家里 class 我必须定义 recyclerview。所以我打算使用片段 class.
中的 recyclerview 变量
这是主页 class 代码。
myRef.setValue(post).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
popupClickProgress.setVisibility(View.INVISIBLE);
popupAddBtn.setVisibility(View.VISIBLE);
// illegal 오류 해결 수정
if(popAddPost!=null&&popAddPost.isShowing()){
popAddPost.dismiss();
}
FragmentManager fm = getSupportFragmentManager();
HomeFragment frag1 = (HomeFragment)fm.findFragmentById(R.id.postRecylerView);
frag1.
}
});
片段 class
public class HomeFragment extends Fragment {
private OnFragmentInteractionListener mListener;
private int position;
private int ant;
RecyclerView postRecyclerView ;
PostAdapter postAdapter;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
List<Post> postList;
public HomeFragment() {
// Required empty public constructor
}
public static HomeFragment newInstance(String param1, String param2) {
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
LinearLayoutManager lin = new LinearLayoutManager(getActivity());
lin.setStackFromEnd(true);
lin.setReverseLayout(true);
View fragmentView = inflater.inflate(R.layout.fragment_home, container, false);
postRecyclerView = fragmentView.findViewById(R.id.postRV);
postRecyclerView.setLayoutManager(lin);
postRecyclerView.setHasFixedSize(true);
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference("Posts");
return fragmentView;
}
我不知道为什么我不能接近 postRecyclerView 变量??
你能给我一些建议吗?
所以根据我的理解,您正在尝试将该变量的值(从 Home.java)传递到位于片段内部的回收器视图?是吗?
您要做的是在 类 之间传递数据。我对 Java 有点生疏,所以这可能不是最好的方法,但试试看,然后再回复我。
class yourClass {
private myClassA classAInstance;
public yourClass(myClassA a)
{
classAInstance = a;
}
void I_AM_a_button_press() // function
{
classAInstance.printVariable();
}
}
我还建议您查看此博客 post,这对您有很大帮助。祝你好运。
我想在片段 class 中使用 postRecyclerView 变量到主页 class..
因为我想在添加post时滚动位置。但在家里 class 我必须定义 recyclerview。所以我打算使用片段 class.
中的 recyclerview 变量这是主页 class 代码。
myRef.setValue(post).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
popupClickProgress.setVisibility(View.INVISIBLE);
popupAddBtn.setVisibility(View.VISIBLE);
// illegal 오류 해결 수정
if(popAddPost!=null&&popAddPost.isShowing()){
popAddPost.dismiss();
}
FragmentManager fm = getSupportFragmentManager();
HomeFragment frag1 = (HomeFragment)fm.findFragmentById(R.id.postRecylerView);
frag1.
}
});
片段 class
public class HomeFragment extends Fragment {
private OnFragmentInteractionListener mListener;
private int position;
private int ant;
RecyclerView postRecyclerView ;
PostAdapter postAdapter;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
List<Post> postList;
public HomeFragment() {
// Required empty public constructor
}
public static HomeFragment newInstance(String param1, String param2) {
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
LinearLayoutManager lin = new LinearLayoutManager(getActivity());
lin.setStackFromEnd(true);
lin.setReverseLayout(true);
View fragmentView = inflater.inflate(R.layout.fragment_home, container, false);
postRecyclerView = fragmentView.findViewById(R.id.postRV);
postRecyclerView.setLayoutManager(lin);
postRecyclerView.setHasFixedSize(true);
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference("Posts");
return fragmentView;
}
我不知道为什么我不能接近 postRecyclerView 变量??
你能给我一些建议吗?
所以根据我的理解,您正在尝试将该变量的值(从 Home.java)传递到位于片段内部的回收器视图?是吗?
您要做的是在 类 之间传递数据。我对 Java 有点生疏,所以这可能不是最好的方法,但试试看,然后再回复我。
class yourClass {
private myClassA classAInstance;
public yourClass(myClassA a)
{
classAInstance = a;
}
void I_AM_a_button_press() // function
{
classAInstance.printVariable();
}
}
我还建议您查看此博客 post,这对您有很大帮助。祝你好运。