NullPointerException异常:尝试调用虚方法对空对象引用'诠释java.util.ArrayList.size() [英] NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
本文介绍了NullPointerException异常:尝试调用虚方法对空对象引用'诠释java.util.ArrayList.size()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是一个新手,以片段
和自定义的的ListView
适配器。谁能给我一个手好吗?
I'm a newbie to Fragments
and custom ListView
adapters. Can anyone give me a hand please?
我有我的片段
在那里我有我的的ListView
I've got my Fragment
where I have my ListView
public class RecordingListFragment extends Fragment implements OnItemClickListener {
ListView mListView;
TextView emptyView;
Button options, delete,edit;
ArrayList<String> recordings = null;
RecordingsListAdapter mAdapter;
public RecordingListFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.recording_list_fragment, container,false);
options = (Button) rootView.findViewById(R.id.options);
edit = (Button) rootView.findViewById(R.id.edit);
delete = (Button) rootView.findViewById(R.id.delete);
mListView = (ListView) rootView.findViewById(R.id.list);
emptyView = (TextView) rootView.findViewById(R.id.empty);
mAdapter = new RecordingsListAdapter(this, recordings);
mListView.setAdapter(mAdapter);
mListView.setEmptyView(emptyView);
mListView.setOnItemClickListener(this);
return rootView;
}
}
和我的XML它
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:id="@+id/recording_list_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical">
<RelativeLayout
android:layout_height="50dp"
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="@drawable/title" >
<TextView
android1:id="@+id/title"
android1:layout_width="wrap_content"
android1:layout_height="50dp"
android1:layout_alignParentTop="true"
android1:layout_centerHorizontal="true"
android1:layout_marginStart="80dp"
android1:gravity="center"
android1:text="@string/app_name"
android1:textAlignment="center"
android1:textColor="#000000"
android1:textStyle="bold" />
</RelativeLayout>
<FrameLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<ListView
android:id="@+id/list"
android:animateLayoutChanges="true"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- android:divider="@null"-->
<TextView
android:id="@+id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/empty_list_text"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:paddingTop="180dp" />
</FrameLayout>
</LinearLayout>
和我有我的自定义列表项
and I've got my custom list item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal" >
<CheckedTextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:textColor="#000000"
/>
</LinearLayout>
终于,我适配器
public class RecordingsListAdapter extends BaseAdapter {
Context ctx;
LayoutInflater lInflater;
ArrayList<String> recordings;
RecordingsListAdapter(Context context, ArrayList<String> products) {
ctx = context;
recordings = products;
lInflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public RecordingsListAdapter(RecordingListFragment recordingListFragment,
ArrayList<String> recordings) {
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
return recordings.size();
}
@Override
public Object getItem(int position) {
return recordings.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = lInflater.inflate(R.layout.custom_list_item, parent, false);
}
return view;
}
}
当我运行它,我得到这个空指针
and when I run this, I get this null pointer
11-26 11:00:45.352: E/AndroidRuntime(10191): java.lang.RuntimeException: Unable to start activity ComponentInfo{d/recordings.RecordingsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread.access$800(ActivityThread.java:144)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.os.Handler.dispatchMessage(Handler.java:102)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.os.Looper.loop(Looper.java:135)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread.main(ActivityThread.java:5221)
11-26 11:00:45.352: E/AndroidRuntime(10191): at java.lang.reflect.Method.invoke(Native Method)
11-26 11:00:45.352: E/AndroidRuntime(10191): at java.lang.reflect.Method.invoke(Method.java:372)
11-26 11:00:45.352: E/AndroidRuntime(10191): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
11-26 11:00:45.352: E/AndroidRuntime(10191): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-26 11:00:45.352: E/AndroidRuntime(10191): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
11-26 11:00:45.352: E/AndroidRuntime(10191): at recordings.RecordingsListAdapter.getCount(RecordingsListAdapter.java:36)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.widget.ListView.setAdapter(ListView.java:487)
11-26 11:00:45.352: E/AndroidRuntime(10191): at recordings.RecordingListFragment.onCreateView(RecordingListFragment.java:47)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.Fragment.performCreateView(Fragment.java:2053)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:894)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.BackStackRecord.run(BackStackRecord.java:833)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.Activity.performStart(Activity.java:5948)
11-26 11:00:45.352: E/AndroidRuntime(10191): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
11-26 11:00:45.352: E/AndroidRuntime(10191): ... 10 more
感谢你在前进!
推荐答案
您应该初始化你的录音。要传递到适配器空
You should initialize yours recordings. You are passing to adapter null
ArrayList<String> recordings = null; //You are passing this null
这篇关于NullPointerException异常:尝试调用虚方法对空对象引用'诠释java.util.ArrayList.size()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文