Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我在尝试引用Textview时会得到NPE_Java_Arrays_Android Studio_Cardview - Fatal编程技术网

Java 为什么我在尝试引用Textview时会得到NPE

Java 为什么我在尝试引用Textview时会得到NPE,java,arrays,android-studio,cardview,Java,Arrays,Android Studio,Cardview,我正在android studio中编写一个时间表应用程序,我想将一周中几天的第一个字母作为图像视图,并将实际日期存储在字符串中,以便在图像视图旁边显示。我使用的是CardView。不幸的是,我在第103行的空对象引用上得到一个NPE“试图调用虚拟方法'void.android.widget.textview.setText(java.lang.charsequence)'”,该行有holder.tvWeek.setText(week[position]);。 这是我的密码 公共类weekAct

我正在android studio中编写一个时间表应用程序,我想将一周中几天的第一个字母作为图像视图,并将实际日期存储在字符串中,以便在图像视图旁边显示。我使用的是CardView。不幸的是,我在第103行的空对象引用上得到一个NPE“试图调用虚拟方法'void.android.widget.textview.setText(java.lang.charsequence)'”,该行有holder.tvWeek.setText(week[position]);。 这是我的密码

公共类weekActivity扩展了AppCompative活动{
专用工具栏;
私有列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_week);
setUIViews();
initToolbar();
setupListView();
}
私有void setUIViews(){
toolbar=findViewById(R.id.ToolBarWeek);
listView=findViewById(R.id.tvWeek);
}
私有void initToolbar(){
设置支持操作栏(工具栏);
getSupportActionBar().setTitle(“周”);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
私有void setupListView(){
String[]week=getResources().getStringArray(R.array.week);
WeekAdapter=新的WeekAdapter(这个,R.layout.activity\u week\u single\u item,week);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
开关(一){
案例0:
打破
案例1:
打破
案例2:
打破
案例3:
打破
案例4:
打破
案例5:
打破
案例6:
打破
违约:
打破
}
}
});
}
公共类WeekAdapter扩展了ArrayAdapter{
私有int资源;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
私有字符串[]周=新字符串[]{};
公共WeekAdapter(上下文、int资源、字符串[]对象){
超级(上下文、资源、对象);
这个资源=资源;
本周=对象;
layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的viewHolder();
convertView=LayoutFlater.inflate(资源,空);
holder.ivLogo=(LetterImageView)convertView.findViewById(R.id.ivLetter);
holder.tvWeek=(TextView)convertView.findViewById(R.id.tvMain);
convertView.setTag(支架);
}否则{
holder=(viewHolder)convertView.getTag();
}
支架.ivLogo.setOval(真);
holder.ivLogo.setLetter(周[position].charAt(0));
holder.tvWeek.setText(周[位置]);
返回视图;
}
类视图持有者{
私人LetterImageView ivLogo;
私人文本查看电视周;
}
}
@凌驾
公共布尔值OnOptionItemSelected(@NonNull MenuItem item){
开关(item.getItemId()){
案例android.R.id.home:{
onBackPressed();
}
}
返回super.onOptionsItemSelected(项目);
}
}
中的


tvMain更改为tvWeek

您好。请正确格式化您的代码,我们无法从这个布局中了解太多。在文本框上方有一个“{}”选项。单击它并将代码粘贴到那里。将代码放在``内两次,它看起来会非常好。您需要发布布局XML
holder.tvWeek = (TextView);
convertView.findViewById(R.id.tvMain);