只学了几天的android开发,java也不好QAQ
现在在做学校的大作业遇到的问题求解报错为: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference部分代码:
private LinearLayoutManager LayoutManager;
private void initview() {
//获取RecyclerView的实例
RecyclerView recyclerView =findViewById(R.id.recycler); LayoutManager = new LinearLayoutManager(this);
LayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(LayoutManager);
MyAdapter adapter=new MyAdapter(listpic,this);
//完成adapter设置
recyclerView.setAdapter(adapter); }完整代码:package com.xxca.cherry.fragment;import android.graphics.drawable.Drawable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;import com.xxca.cherry.R;
import com.xxca.cherry.entity.pic;
import com.xxca.cherry.recycleView.MyAdapter;import java.util.ArrayList;
import java.util.List;public class firstActivity extends AppCompatActivity implements View.OnClickListener{
TextView tvmain,tvfind,tvme;
Fragment mainfragment,findfragment,mefragment;
FragmentManager fragmentManager;
private LinearLayoutManager LayoutManager;
private List<pic> listpic=new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
fragmentManager=getSupportFragmentManager();//获取管理器
inittv();//初始化
tvmain.performLongClick();//模拟点击 //recyclerview
getid();
//开始设置RecyclerView initview();
} private void initview() {
//获取RecyclerView的实例
RecyclerView recyclerView =findViewById(R.id.recycler);
LayoutManager = new LinearLayoutManager(this);
LayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(LayoutManager);
MyAdapter adapter=new MyAdapter(listpic,this);
//完成adapter设置
recyclerView.setAdapter(adapter); } private void getid() {
pic pic_1=new pic(R.drawable.header_pic_ad1);
pic pic_2=new pic(R.drawable.header_pic_ad2);
listpic.add(pic_1);
listpic.add(pic_2); }
private void inittv() {
tvmain=findViewById(R.id.tvmain);
tvfind=findViewById(R.id.tvfind);
tvme=findViewById(R.id.tvme);
tvmain.setOnClickListener(this);
tvfind.setOnClickListener(this);
tvme.setOnClickListener(this);
} //隐藏
private void hideall(FragmentTransaction fragmentTransaction)
{
if(mainfragment!=null)fragmentTransaction.hide(mainfragment);
if(findfragment!=null)fragmentTransaction.hide(findfragment);
if(mefragment!=null)fragmentTransaction.hide(mefragment);
} private void setnormal()
{
Drawable drawable=getResources().getDrawable(R.drawable.nav_main_normal);
//左上角起始位置,新的大小
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvmain.setCompoundDrawables(null,drawable,null,null); Drawable drawable2=getResources().getDrawable(R.drawable.nav_find_normal);
//左上角起始位置,新的大小
drawable2.setBounds(0,0,drawable2.getMinimumWidth(),drawable2.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvfind.setCompoundDrawables(null,drawable2,null,null); //获取更换的图片
Drawable drawable3=getResources().getDrawable(R.drawable.nav_me_normal);
//左上角起始位置,新的大小
drawable3.setBounds(0,0,drawable3.getMinimumWidth(),drawable3.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvme.setCompoundDrawables(null,drawable3,null,null); }
@Override
public void onClick(View view) {
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();//开启事务
// Toast.makeText(firstActivity.this,"选中了",Toast.LENGTH_LONG).show();
switch (view.getId())
{
case R.id.tvmain:
setnormal();
//获取更换的图片
Drawable drawable=getResources().getDrawable(R.drawable.nav_main_click);
//左上角起始位置,新的大小
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvmain.setCompoundDrawables(null,drawable,null,null);
hideall(fragmentTransaction);
MainFragment mainFragment=new MainFragment();
fragmentTransaction.add(R.id.container,mainFragment,"mainFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break;
case R.id.tvfind:
setnormal();
//获取更换的图片
Drawable drawable2=getResources().getDrawable(R.drawable.nav_find_click);
//左上角起始位置,新的大小
drawable2.setBounds(0,0,drawable2.getMinimumWidth(),drawable2.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvfind.setCompoundDrawables(null,drawable2,null,null);
hideall(fragmentTransaction);
FindFragment findFragment=new FindFragment();
fragmentTransaction.add(R.id.container,findFragment,"findFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break;
case R.id.tvme:
setnormal();
//获取更换的图片
Drawable drawable3=getResources().getDrawable(R.drawable.nav_me_click);
//左上角起始位置,新的大小
drawable3.setBounds(0,0,drawable3.getMinimumWidth(),drawable3.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvme.setCompoundDrawables(null,drawable3,null,null);
hideall(fragmentTransaction);
MeFragment meFragment=new MeFragment();
fragmentTransaction.add(R.id.container,meFragment,"meFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break; } }}package com.xxca.cherry.entity;public class pic {
private int imageId; public pic( int imageId) { this.imageId = imageId;
}
public int getImageId() {
return imageId;
}
}
package com.xxca.cherry.recycleView;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import com.xxca.cherry.R;
import com.xxca.cherry.entity.pic;import java.util.List;
//将数据和布局item进行绑定
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{//可以托管数据集合,
// 为每一项Item创建视图并且绑定数据
private LayoutInflater mInflater;
private List<pic> mpicList;
private Context mContext; public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.imag_item,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
} @Override
public void onBindViewHolder( MyAdapter.ViewHolder holder, int position) {
pic pic1= mpicList.get(position);
holder.item_imge.setImageResource(pic1.getImageId()); } @Override
public int getItemCount() {
return mpicList.size();
} //承载Item视图的子布局
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView item_imge;
public ViewHolder(View view){
super(view);
item_imge = view.findViewById(R.id.item_imge);
}
}
public MyAdapter(List<pic> picList,Context context)
{
mContext=context;
mpicList=picList; }
}
现在在做学校的大作业遇到的问题求解报错为: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference部分代码:
private LinearLayoutManager LayoutManager;
private void initview() {
//获取RecyclerView的实例
RecyclerView recyclerView =findViewById(R.id.recycler); LayoutManager = new LinearLayoutManager(this);
LayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(LayoutManager);
MyAdapter adapter=new MyAdapter(listpic,this);
//完成adapter设置
recyclerView.setAdapter(adapter); }完整代码:package com.xxca.cherry.fragment;import android.graphics.drawable.Drawable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;import com.xxca.cherry.R;
import com.xxca.cherry.entity.pic;
import com.xxca.cherry.recycleView.MyAdapter;import java.util.ArrayList;
import java.util.List;public class firstActivity extends AppCompatActivity implements View.OnClickListener{
TextView tvmain,tvfind,tvme;
Fragment mainfragment,findfragment,mefragment;
FragmentManager fragmentManager;
private LinearLayoutManager LayoutManager;
private List<pic> listpic=new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
fragmentManager=getSupportFragmentManager();//获取管理器
inittv();//初始化
tvmain.performLongClick();//模拟点击 //recyclerview
getid();
//开始设置RecyclerView initview();
} private void initview() {
//获取RecyclerView的实例
RecyclerView recyclerView =findViewById(R.id.recycler);
LayoutManager = new LinearLayoutManager(this);
LayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(LayoutManager);
MyAdapter adapter=new MyAdapter(listpic,this);
//完成adapter设置
recyclerView.setAdapter(adapter); } private void getid() {
pic pic_1=new pic(R.drawable.header_pic_ad1);
pic pic_2=new pic(R.drawable.header_pic_ad2);
listpic.add(pic_1);
listpic.add(pic_2); }
private void inittv() {
tvmain=findViewById(R.id.tvmain);
tvfind=findViewById(R.id.tvfind);
tvme=findViewById(R.id.tvme);
tvmain.setOnClickListener(this);
tvfind.setOnClickListener(this);
tvme.setOnClickListener(this);
} //隐藏
private void hideall(FragmentTransaction fragmentTransaction)
{
if(mainfragment!=null)fragmentTransaction.hide(mainfragment);
if(findfragment!=null)fragmentTransaction.hide(findfragment);
if(mefragment!=null)fragmentTransaction.hide(mefragment);
} private void setnormal()
{
Drawable drawable=getResources().getDrawable(R.drawable.nav_main_normal);
//左上角起始位置,新的大小
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvmain.setCompoundDrawables(null,drawable,null,null); Drawable drawable2=getResources().getDrawable(R.drawable.nav_find_normal);
//左上角起始位置,新的大小
drawable2.setBounds(0,0,drawable2.getMinimumWidth(),drawable2.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvfind.setCompoundDrawables(null,drawable2,null,null); //获取更换的图片
Drawable drawable3=getResources().getDrawable(R.drawable.nav_me_normal);
//左上角起始位置,新的大小
drawable3.setBounds(0,0,drawable3.getMinimumWidth(),drawable3.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvme.setCompoundDrawables(null,drawable3,null,null); }
@Override
public void onClick(View view) {
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();//开启事务
// Toast.makeText(firstActivity.this,"选中了",Toast.LENGTH_LONG).show();
switch (view.getId())
{
case R.id.tvmain:
setnormal();
//获取更换的图片
Drawable drawable=getResources().getDrawable(R.drawable.nav_main_click);
//左上角起始位置,新的大小
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvmain.setCompoundDrawables(null,drawable,null,null);
hideall(fragmentTransaction);
MainFragment mainFragment=new MainFragment();
fragmentTransaction.add(R.id.container,mainFragment,"mainFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break;
case R.id.tvfind:
setnormal();
//获取更换的图片
Drawable drawable2=getResources().getDrawable(R.drawable.nav_find_click);
//左上角起始位置,新的大小
drawable2.setBounds(0,0,drawable2.getMinimumWidth(),drawable2.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvfind.setCompoundDrawables(null,drawable2,null,null);
hideall(fragmentTransaction);
FindFragment findFragment=new FindFragment();
fragmentTransaction.add(R.id.container,findFragment,"findFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break;
case R.id.tvme:
setnormal();
//获取更换的图片
Drawable drawable3=getResources().getDrawable(R.drawable.nav_me_click);
//左上角起始位置,新的大小
drawable3.setBounds(0,0,drawable3.getMinimumWidth(),drawable3.getMinimumHeight());
//可以在上设置图标,不显示的地方设置为null
tvme.setCompoundDrawables(null,drawable3,null,null);
hideall(fragmentTransaction);
MeFragment meFragment=new MeFragment();
fragmentTransaction.add(R.id.container,meFragment,"meFragment");//要传入的对象和fragment对象
fragmentTransaction.commit();
break; } }}package com.xxca.cherry.entity;public class pic {
private int imageId; public pic( int imageId) { this.imageId = imageId;
}
public int getImageId() {
return imageId;
}
}
package com.xxca.cherry.recycleView;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import com.xxca.cherry.R;
import com.xxca.cherry.entity.pic;import java.util.List;
//将数据和布局item进行绑定
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{//可以托管数据集合,
// 为每一项Item创建视图并且绑定数据
private LayoutInflater mInflater;
private List<pic> mpicList;
private Context mContext; public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.imag_item,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
} @Override
public void onBindViewHolder( MyAdapter.ViewHolder holder, int position) {
pic pic1= mpicList.get(position);
holder.item_imge.setImageResource(pic1.getImageId()); } @Override
public int getItemCount() {
return mpicList.size();
} //承载Item视图的子布局
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView item_imge;
public ViewHolder(View view){
super(view);
item_imge = view.findViewById(R.id.item_imge);
}
}
public MyAdapter(List<pic> picList,Context context)
{
mContext=context;
mpicList=picList; }
}
Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager on a null object reference
很明显你的
RecyclerView recyclerView =findViewById(R.id.recycler); 没找到控件