在androidstudio的onCreateview中调用一个新方法中的view



im试图在我的新方法中从我的充气器调用"view",但它不起作用,它说未解决。如果我把setUpRecyclerView下的整个代码移到onCreateView中,它就可以工作了。有没有办法让它保持原样,这样我就可以保持onCreatView的整洁?所有代码都在一个片段中。我也试过使用getView.findViewById,但也没用。

''

package com.example.hostapp;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
public class HomeFragment extends Fragment {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference categoryref = db.collection("categories");
private categoryCardAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);


return view;
}
public void setUpRecyclerView (){
Query query = categoryref.orderBy("name",Query.Direction.DESCENDING);
FirestoreRecyclerOptions<categoryCard> options = new FirestoreRecyclerOptions.Builder<categoryCard>()
.setQuery(query, categoryCard.class)
.build();
adapter = new categoryCardAdapter(options);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_category);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
recyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}

''

这是有效的代码:

package com.example.hostapp;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
public class HomeFragment extends Fragment {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference categoryref = db.collection("categories");
private categoryCardAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);

Query query = categoryref.orderBy("name",Query.Direction.DESCENDING);
FirestoreRecyclerOptions<categoryCard> options = new FirestoreRecyclerOptions.Builder<categoryCard>()
.setQuery(query, categoryCard.class)
.build();
adapter = new categoryCardAdapter(options);
**RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_category);**
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
recyclerView.setAdapter(adapter);
return view;
}
public void setUpRecyclerView (){
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}

您在第一个代码示例中没有调用setupRecyclerView()方法。您可以在返回视图之前从createView()方法调用它,也可以从onViewCreated()方法调用该方法。我更喜欢第二种选择。

最新更新