android.widget.ArrayAdapter.init(ArrayAdapter.java:310)上的java.lang.NullPointerException
我正在创建一个Android launcher,它有多个带有滑动手势的标签,可以从一个片段切换到另一个片段。除了ShelfViewActivity(尽管它说activity是一个片段)之外,我所有的屏幕都工作得很好。一切都正常,但当我滚动到ShelfViewActivity时,启动程序崩溃了。我这里有航海日志,也有全班记录。错误在第35行,我想。。。。我已经评论了第35行的位置。我不知道我做错了什么,我还在学习,所以请不要判断 日志:android.widget.ArrayAdapter.init(ArrayAdapter.java:310)上的java.lang.NullPointerException,java,android,android-fragments,Java,Android,Android Fragments,我正在创建一个Android launcher,它有多个带有滑动手势的标签,可以从一个片段切换到另一个片段。除了ShelfViewActivity(尽管它说activity是一个片段)之外,我所有的屏幕都工作得很好。一切都正常,但当我滚动到ShelfViewActivity时,启动程序崩溃了。我这里有航海日志,也有全班记录。错误在第35行,我想。。。。我已经评论了第35行的位置。我不知道我做错了什么,我还在学习,所以请不要判断 日志: 11-12 05:30:55.337: E/AndroidR
11-12 05:30:55.337: E/AndroidRuntime(3889): FATAL EXCEPTION: main
11-12 05:30:55.337: E/AndroidRuntime(3889): java.lang.NullPointerException
11-12 05:30:55.337: E/AndroidRuntime(3889): at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
11-12 05:30:55.337: E/AndroidRuntime(3889): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153)
11-12 05:30:55.337: E/AndroidRuntime(3889): at com.d4a.tobias.ShelfViewActivity$VerticalAdapter.<init>(ShelfViewActivity.java:51)
11-12 05:30:55.337: E/AndroidRuntime(3889): at com.d4a.tobias.ShelfViewActivity.<init>(ShelfViewActivity.java:35)
11-12 05:30:55.337: E/AndroidRuntime(3889): at it.gmariotti.android.examples.googleaccount.MainFrag$MyAdapter.getItem(MainFrag.java:80)
11-12 05:30:55.337: E/AndroidRuntime(3889): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:95)
11-12 05:30:55.337:E/AndroidRuntime(3889):致命异常:main
11-12 05:30:55.337:E/AndroidRuntime(3889):java.lang.NullPointerException
11-12 05:30:55.337:E/AndroidRuntime(3889):位于android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
11-12 05:30:55.337:E/AndroidRuntime(3889):在android.widget.ArrayAdapter.(ArrayAdapter.java:153)
11-12 05:30:55.337:E/AndroidRuntime(3889):在com.d4a.tobias.ShelfViewActivity$VerticalAdapter。(ShelfViewActivity.java:51)
11-12 05:30:55.337:E/AndroidRuntime(3889):位于com.d4a.tobias.shelfviewaActivity.(shelfviewaActivity.java:35)
11-12 05:30:55.337:E/AndroidRuntime(3889):at.gmariotti.android.examples.googleaccount.MainFrag$MyAdapter.getItem(MainFrag.java:80)
11-12 05:30:55.337:E/AndroidRuntime(3889):在android.support.v4.app.FragmentPagerAdapter.InstanceItem(FragmentPagerAdapter.java:95)
ShelfViewActivity.java
package com.d4a.tobias;
import java.util.ArrayList;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class ShelfViewActivity extends ListFragment {
/** Called when the activity is first created. */
private VerticalAdapter verListAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.main, container, false);
}
/*
* Calling Library & BookItem classes for create list of groups
* groupbyArrayBookItem return back array of array of items
*/
Library lb = new Library();{
for (BookItem item : BookItem.ALL_BOOKS) {
lb.addBookItem(item);
}
ArrayList<ArrayList<BookItem>> groupList = new ArrayList<ArrayList<BookItem>>();
groupList = lb.groupbyArrayBookItem(Library.AUTHOR);
verListAdapter = new VerticalAdapter(getActivity(), R.layout.bookrow, groupList); //line 35
setListAdapter(verListAdapter);
verListAdapter.notifyDataSetChanged();
}
/**
* This class add a list of ArrayList to ListView that it include multi
* items as bookItem.
*/
private class VerticalAdapter extends ArrayAdapter<ArrayList<BookItem>> {
private int resource;
public VerticalAdapter(Context _context, int _ResourceId,
ArrayList<ArrayList<BookItem>> _items) {
super(_context, _ResourceId, _items);
this.resource = _ResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
if (convertView == null) {
rowView = LayoutInflater.from(getContext()).inflate(resource,
null);
} else {
rowView = convertView;
}
HorizontalListView hListView = (HorizontalListView) rowView
.findViewById(R.id.subListview);
HorizontalAdapter horListAdapter = new HorizontalAdapter(
getContext(), R.layout.item, getItem(position));
hListView.setAdapter(horListAdapter);
return rowView;
}
}
/*
* This class add some items to Horizontal ListView this ListView include
* several bookItem.
*/
private class HorizontalAdapter extends ArrayAdapter<BookItem> {
private int resource;
public HorizontalAdapter(Context _context, int _textViewResourceId,
ArrayList<BookItem> _items) {
super(_context, _textViewResourceId, _items);
this.resource = _textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View retval = LayoutInflater.from(getContext()).inflate(
this.resource, null);
TextView topText = (TextView) retval.findViewById(R.id.title);
TextView bottomText = (TextView) retval
.findViewById(R.id.author);
topText.setText(getItem(position).getAuthor());
bottomText.setText(getItem(position).getTitle());
return retval;
}
}
}
package com.d4a.tobias;
导入java.util.ArrayList;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v4.app.ListFragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类ShelfViewActivity扩展了ListFragment{
/**在首次创建活动时调用*/
专用垂直适配器;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(右布局主,容器,假);
}
/*
*调用库和BookItem类以创建组列表
*groupbyArrayBookItem返回项目数组的数组
*/
库lb=新库(){
对于(BookItem项目:BookItem.ALL_图书){
lb.addBookItem(项目);
}
ArrayList groupList=新建ArrayList();
groupList=lb.groupbyArrayBookItem(Library.AUTHOR);
verListAdapter=new VerticalAdapter(getActivity(),R.layout.bookrow,groupList);//第35行
setListAdapter(verListAdapter);
verListAdapter.notifyDataSetChanged();
}
/**
*此类将ArrayList的列表添加到ListView,其中包含多个
*项目作为bookItem。
*/
私有类垂直适配器扩展了ArrayAdapter{
私有int资源;
公共垂直适配器(Context\u Context,int\u ResourceId,
ArrayList(项目){
超级(\u上下文、\u资源ID、\u项目);
this.resource=\u ResourceId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图;
if(convertView==null){
rowView=LayoutInflater.from(getContext()).flate(资源、,
无效);
}否则{
rowView=convertView;
}
HorizontalListView hListView=(HorizontalListView)行视图
.findViewById(R.id.subListview);
HorizontalAdapter horListAdapter=新的HorizontalAdapter(
getContext(),R.layout.item,getItem(position));
hListView.setAdapter(horListAdapter);
返回行视图;
}
}
/*
*此类向水平ListView添加此ListView包含的某些项
*几本书。
*/
私有类HorizontalAdapter扩展了ArrayAdapter{
私有int资源;
公共水平适配器(Context\u Context,int\u textViewResourceId,
ArrayList(项目){
超级(_上下文、_文本视图资源ID、_项目);
this.resource=\u textViewResourceId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
View retval=LayoutInflater.from(getContext())。充气(
此参数为0.resource,null);
TextView topText=(TextView)retval.findViewById(R.id.title);
TextView bottomText=(TextView)retval
.findviewbyd(R.id.作者);
setText(getItem(position.getAuthor());
setText(getItem(position.getTitle());
返回返回;
}
}
}
任何帮助都将是惊人的
提前谢谢 尝试更改此选项:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.main, container, false);
}
/*
* Calling Library & BookItem classes for create list of groups
* groupbyArrayBookItem return back array of array of items
*/
Library lb = new Library();{
for (BookItem item : BookItem.ALL_BOOKS) {
lb.addBookItem(item);
}
ArrayList<ArrayList<BookItem>> groupList = new ArrayList<ArrayList<BookItem>>();
groupList = lb.groupbyArrayBookItem(Library.AUTHOR);
verListAdapter = new VerticalAdapter(getActivity(), R.layout.bookrow, groupList); //line 35
setListAdapter(verListAdapter);
verListAdapter.notifyDataSetChanged();
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(右布局主,容器,假);
}
/*
*调用库和BookItem类以创建组列表
*groupbyArrayBookItem返回项目数组的数组
*/
库lb=新库();{
对于(BookItem项目:BookItem.ALL_图书){
lb.addBookItem(项目);
}
ArrayList groupList=新建ArrayList();
groupList=lb.groupbyArrayBookItem(Library.AUTHOR);
verListAdapter=new VerticalAdapter(getActivity(),R.layout.bookrow,groupList);//第35行
setListAdapter(verListAdapter);
verListAdapter.notifyDataSetChanged();
}
为此:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main, container, false);
/*
* Calling Library & BookItem classes for create list of groups
* groupbyArrayBookItem return back array of array of items
*/
Library lb = new Library();{
for (BookItem item : BookItem.ALL_BOOKS) {
lb.addBookItem(item);
}
ArrayList<ArrayList<BookItem>> groupList = new ArrayList<ArrayList<BookItem>>();
groupList = lb.groupbyArrayBookItem(Library.AUTHOR);
verListAdapter = new VerticalAdapter(getActivity(), R.layout.bookrow, groupList); //line 35
setListAdapter(verListAdapter);
verListAdapter.notifyDataSetChanged();
return rootView;
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.main,容器,假);
/*
*为创建lis调用库和BookItem类