NullPointerException: Versuch zum aufrufen der virtuellen Methode " int java.util.ArrayList.Größe()' auf ein null-Objekt Verweis
Ich bin ein Neuling auf Fragments
und benutzerdefinierte ListView
Adapter. Kann jemand geben Sie mir eine hand bitte?
Hab ich meine Fragment
wo ich meine 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;
}
}
und mein xml für it -
<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>
und ich habe meine eigene Liste posten
<?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>
und endlich, mein Adapter
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;
}
}
und wenn ich diesen starte, bekomme ich diese null-Zeiger
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
Danke im vorraus!!!!!!
- möglich, Duplikat der Was ist eine Null-Zeiger-Ausnahme aus, und wie kann ich es beheben?
- ArrayList<String> Aufnahmen = null; sollten Sie es initialisieren
InformationsquelleAutor android enthusiast | 2014-11-26
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie initialisieren ihrigen Aufnahmen. Sie auf der Durchreise sind adapter null
Dieses Problem wird durch ArrayList-variable nicht instanziiert werden.
Deklarieren müssen "Aufnahmen" - variable wie folgt aus, das sollte das Problem lösen;
dieser ruft default-Konstruktor auf und weist leere Zeichenfolge in die Aufnahmen Variablen, so dass es nicht null mehr.
Ändern
zu
und auch stellen Sie sicher, dass
recordings!=null
beimAdapter = new RecordingsListAdapter(this, recordings);
ArrayList
wie.recordings.add("ABC");
recordings.add("AXYZ");
und so weiter...