Java 使用recyclerview和适配器启动片段时出错
当我使用Java 使用recyclerview和适配器启动片段时出错,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,当我使用fragment、recyclerview和adapter启动活动时,应用程序将停止。我不知道问题出在哪里。我试过不同的方法 我的日志猫: java.lang.NullPointerException:尝试调用虚拟方法“void” android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' 关于空对象引用 位于com.orthony.FeedActiv
fragment
、recyclerview
和adapter
启动活动时,应用程序将停止。我不知道问题出在哪里。我试过不同的方法
我的日志猫:
java.lang.NullPointerException:尝试调用虚拟方法“void”
android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)'
关于空对象引用
位于com.orthony.FeedActivity.onStart(FeedActivity.java:133)
位于android.support.v4.app.Fragment.performStart(Fragment.java:2287)
我的代码:
public class FeedActivity extends Fragment{
private RecyclerView mBlogList;
private Query mQuery;
private Query mQueryck;
private DatabaseReference mDatabaseUsers;
private FirebaseUser mCurrent;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
FirebaseRecyclerAdapter mAdapter;
public FeedActivity() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final FragmentActivity c = getActivity();
View layout = inflater.inflate(R.layout.fragment_feed, container, false);
return layout;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mBlogList = (RecyclerView) view.findViewById(R.id.blog_list);
mBlogList.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mBlogList.setLayoutManager(layoutManager);
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if(firebaseAuth.getCurrentUser() == null){
Intent loginIntent = new Intent(getActivity(), SignUpActivity.class);
loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginIntent);
}
}
};
mQuery = FirebaseDatabase.getInstance().getReference().child("Blog").limitToLast(20);
mQuery.keepSynced(true);
mQueryck = FirebaseDatabase.getInstance().getReference().child("Block").limitToLast(20);
mQueryck.keepSynced(true);
mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("users");
mDatabaseUsers.keepSynced(true);
mCurrent = mAuth.getCurrentUser();
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
FirebaseRecyclerOptions<User> options = new FirebaseRecyclerOptions.Builder<User>().setQuery(mQuery, User.class).build();
FirebaseRecyclerOptions<User> optionss = new FirebaseRecyclerOptions.Builder<User>().setQuery(mQueryck, User.class).build();
mAdapter = new FirebaseRecyclerAdapter<User, BlogViewHolder>(options) {
@Override
public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.blog_row, parent, false);
return new BlogViewHolder(view);
}
@Override
protected void onBindViewHolder(BlogViewHolder viewHolder, int position, User model) {
final String post_key = getRef(position).getKey();
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setTime(model.getFirstname());
viewHolder.setImage(getApplicationContext(), model.getImage());
}
};
mBlogList.setAdapter(mAdapter);
mAdapter.startListening();
mAdapter = new FirebaseRecyclerAdapter<User, BlogViewHolder>(optionss) {
@Override
protected void onBindViewHolder(BlogViewHolder viewHolder, int position, User model) {
final String post_key = getRef(position).getKey();
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setTime(model.getFirstname());
viewHolder.setImage(getApplicationContext(), model.getImage());
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent bsingle = new Intent(getActivity(), SinglePostActivity.class);
bsingle.putExtra("post", post_key);
startActivity(bsingle);
}
});
}
@Override
public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.blog_row, parent, false);
return new BlogViewHolder(view);
}
};
}
public static class BlogViewHolder extends RecyclerView.ViewHolder {
View mView;
public BlogViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String title){
TextView post_title = (TextView) mView.findViewById(R.id.post_title);
post_title.setText(title);
}
public void setDesc(String desc){
TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
post_desc.setText(desc);
}
public void setImage(Context ctx, String image){
if (image != null) {
ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
Picasso.with(ctx).load(image).into(post_image);
}
else {
ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
post_image.setVisibility(View.GONE);
}
}
public void setTime(String time){
TextView post_time = (TextView) mView.findViewById(R.id.post_username);
post_time.setText(time);
}
公共类FeedActivity扩展片段{
私人回收站查看mBlogList;
私有查询;
专用查询mQueryck;
私有数据库引用mDatabaseUsers;
私有FirebaseUser mCurrent;
私人消防队;
私有FirebaseAuth.AuthStateListener mAuthListener;
FirebaseRecyclerAdapter mAdapter;
公共服务活动(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
最终碎片活动c=getActivity();
视图布局=充气机。充气(R.layout.fragment\u feed,container,false);
返回布局;
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
mBlogList=(RecyclerView)view.findviewbyd(R.id.blog_list);
mBlogList.setHasFixedSize(true);
LinearLayoutManager布局管理器=新的LinearLayoutManager(getActivity());
mBlogList.setLayoutManager(layoutManager);
mAuth=FirebaseAuth.getInstance();
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
如果(firebaseAuth.getCurrentUser()==null){
Intent loginIntent=newintent(getActivity(),SignUpActivity.class);
登录。添加标志(意图。标志\活动\清除\顶部);
startActivity(登录);
}
}
};
mQuery=FirebaseDatabase.getInstance().getReference().child(“Blog”).limitToLast(20);
mQuery.keepSynced(真);
mQueryck=FirebaseDatabase.getInstance().getReference().child(“Block”).limitToLast(20);
mQueryck.keepSynced(true);
mDatabaseUsers=FirebaseDatabase.getInstance().getReference().child(“用户”);
mDatabaseUsers.keepSynced(true);
mCurrent=mAuth.getCurrentUser();
}
@凌驾
public void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
FirebaseRecyclerOptions选项=新建FirebaseRecyclerOptions.Builder().setQuery(mQuery,User.class).build();
FirebaseRecyclerOptions options=new FirebaseRecyclerOptions.Builder().setQuery(mQueryck,User.class).build();
mAdapter=新FirebaseRecyclerAdapter(选项){
@凌驾
public BlogViewHolder onCreateViewHolder(视图组父级,int-viewType){
//创建ViewHolder的新实例
View-View=LayoutInflater.from(parent.getContext()).flate(R.layout.blog_行,parent,false);
返回新的BlogViewHolder(视图);
}
@凌驾
受保护的void onBindViewHolder(BlogViewHolder、int位置、用户模型){
最后一个字符串post_key=getRef(位置).getKey();
setTitle(model.getTitle());
setDesc(model.getDesc());
setTime(model.getFirstname());
setImage(getApplicationContext(),model.getImage());
}
};
mBlogList.setAdapter(mAdapter);
mAdapter.startListening();
mAdapter=新的FirebaseRecyclerAdapter(选项S){
@凌驾
受保护的void onBindViewHolder(BlogViewHolder、int位置、用户模型){
最后一个字符串post_key=getRef(位置).getKey();
setTitle(model.getTitle());
setDesc(model.getDesc());
setTime(model.getFirstname());
setImage(getApplicationContext(),model.getImage());
viewHolder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent bssingle=新的Intent(getActivity(),SinglePostActivity.class);
b单独输入(“post”,post_键);
星触觉;
}
});
}
@凌驾
public BlogViewHolder onCreateViewHolder(视图组父级,int-viewType){
View-View=LayoutInflater.from(parent.getContext()).flate(R.layout.blog_行,parent,false);
返回新的BlogViewHolder(视图);
}
};
}
公共静态类BlogViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共BlogViewHolder(查看项目视图){
超级(项目视图);
mView=项目视图;
}
公共无效集合标题(字符串标题){
TextView post_title=(TextView)mView.findViewById(R.id.post_title);
post_title.setText(title);
}
公共void setDesc(字符串desc){
TextView post_desc=(TextView)mView.findViewById(R.id.post_desc);
后描述设置文本(描述);
}
公共void setImage(上下文ctx,字符串图像){
如果(图像!=null){
ImageView post_image=(ImageView)mView.findviewbyd(R.id.post_image);
毕加索.with(ctx).load(image).into(post_image);
}
否则{
ImageView post_image=(ImageView)mView.findviewbyd(R.id.post_image);
post_image.setVisibility(View.GONE);
}
}
公共无效设置时间(
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final FragmentActivity c = getActivity();
View layout = inflater.inflate(R.layout.fragment_feed, container, false);
mBlogList = (RecyclerView) layout.findViewById(R.id.blog_list);
return layout;
}