App des plantages au démarrage en raison de java.lang.UnsupportedOperationException: addView (Voir, LayoutParams) ne sont pas pris en charge dans AdapterView
-
15-10-2019 - |
Question
Mon application se bloque chaque fois que je commence dans l'émulateur. Voici le 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)**
Voici mon fichier .java:
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();
}
});
}
}
Mon 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>
Mon xml dialogue:
<?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>
Toute aide sera appréciée. J'ai besoin des exemples de code pour les correctifs, je ne suis pas très expérimenté.
La solution
Dans votre mise en page xml, vous essayez d'ajouter un bouton à l'intérieur d'un ListView. Le ListView est un AdapterView, comme l'erreur dit, il doit être rempli par un adaptateur qui fournit une liste similaire des « choses » - ce pourrait être une liste de chaînes (à partir d'une liste de tableau) ou une liste de vues personnalisées que vous créer, mais ils sont tous fondamentalement le même genre de chose - vous ne pouvez pas, par exemple, ajouter un bouton, puis à un autre ajouter une chaîne. Créer un adaptateur pour fournir les choses que vous voulez dans votre ListView.