Aplicación falla al iniciarse Debido A java.lang.UnsupportedOperationException: addView (Ver, LayoutParams) no se admite en AdapterView

StackOverflow https://stackoverflow.com/questions/4589834

  •  15-10-2019
  •  | 
  •  

Pregunta

Mi aplicación se bloquea cada vez que se inicia en el emulador. Aquí está el 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)**

Aquí está mi archivo .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();
       }
     });
    }
}

Mi 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> 

Mi xml de diálogo:

<?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>

Cualquier ayuda será apreciada. Necesito ejemplos de código para correcciones, yo no soy muy experimentado.

¿Fue útil?

Solución

En su diseño XML, que está tratando de añadir un botón dentro de un ListView. El ListView es un AdapterView, como dice el error, por lo que debe estar ocupado por un adaptador que proporciona una lista de 'cosas' similares - esto podría ser una lista de cadenas (de una lista de arreglo) o una lista de vistas personalizadas que se crean, pero todos ellos son básicamente el mismo tipo de cosas - que no puedes, por ejemplo, agregar un botón, y luego a otro agregar una cadena. Crear un adaptador para proporcionar las cosas que quiere en su ListView.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top