App -Abstürze beim Start aufgrund von java.lang.unsupportedOperationException: AddView (Ansicht, LayoutParams) wird in AdapterView nicht unterstützt
-
15-10-2019 - |
Frage
Meine App stürzt jedes Mal ab, wenn ich sie im Emulator starte. Hier ist der Logcat:
01-02 17:20:58.859: ERROR/AndroidRuntime(249): Uncaught handler: thread main exiting due to uncaught exception
01-02 17:20:58.889: ERROR/AndroidRuntime(249): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shoppinglist/com.shoppinglist.ShoppingList}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.os.Looper.loop(Looper.java:123)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at android.app.ActivityThread.main(ActivityThread.java:4203)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at java.lang.reflect.Method.invoke(Method.java:521)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
01-02 17:20:58.889: ERROR/AndroidRuntime(249): at dalvik.system.NativeStart.main(Native Method)**
Hier ist meine Java -Datei:
package com.shoppinglist;
import android.app.ListActivity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ShoppingList extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1main = (Button) findViewById(R.id.Button01main);
button1main.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(ShoppingList.this);
dialog.setContentView(R.layout.maindialog);
dialog.setCancelable(true);
Button button = (Button) dialog.findViewById(R.id.cancel);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
}
}
Mein layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFCC00"
android:padding="10dp"
android:id="@+id/listview">
<Button
android:id="@+id/Button01main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add item..."/>
</ListView>
Mein Dialog XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout_root"
android:orientation="vertical"
android:background="#FFFFFF"
android:minHeight="100dp"
android:minWidth="300dp">
<EditText
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Type the name of an item here...">
</EditText>
<LinearLayout
android:id="@+id/button_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:layout_gravity="right">
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:layout_gravity="bottom">
</Button>
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:layout_gravity="bottom">
</Button>
</LinearLayout>
</LinearLayout>
Jede Hilfe wird geschätzt. Ich brauche Code -Beispiele für Korrekturen, ich bin nicht sehr erfahren.
Lösung
In Ihrem Layout XML versuchen Sie, eine Schaltfläche in eine Liste hinzuzufügen. Die ListView ist eine AdapterView, wie der Fehler sagt, daher muss sie von einem Adapter bevölkert werden, der eine Liste ähnlicher "Dinge" enthält. Dies können eine Liste von Zeichenfolgen (aus einer Array -Liste) oder eine Liste benutzerdefinierter Ansichten sein, die Sie Erstellen, aber sie sind alle im Grunde genommen die gleiche Art von Dingen - Sie können beispielsweise eine Schaltfläche hinzufügen und dann zu einer anderen eine Zeichenfolge hinzufügen. Erstellen Sie einen Adapter, um die gewünschten Dinge in Ihrer Liste zu geben.