ClassCastException: android.app.Application

La clase que causa el error se da a continuación:

package com.extrasmart; import android.app.Activity; import android.os.Bundle; import android.view.View; //import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.AdapterView.OnItemSelectedListener; public class ActivityImgGrid extends Activity { ExtraSmartApplication application = (ExtraSmartApplication) getApplication(); GridView mGrid; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activityimg_grid); mGrid = (GridView) findViewById(R.id.imgGrid); mGrid.setAdapter(new AppsAdapter()); mGrid.setOnItemSelectedListener(new OnItemSelectedListener() { public void onNothingSelected(AdapterView v) { // TODO Auto-generated method stub } public void onItemSelected(AdapterView parent, View v, int position, long id) { ExtraSmartApplication application = (ExtraSmartApplication) getApplication(); application.setSelCategoryIcon(position); setResult(RESULT_OK); finish(); } }); } public class AppsAdapter extends BaseAdapter { ExtraSmartApplication application = (ExtraSmartApplication) getApplication(); private Integer[] imageIDs = application.getCategoryIcons(); public AppsAdapter() { } public View getView(int position, View convertView, ViewGroup parent) { ImageView i; if (convertView == null) { i = new ImageView(ActivityImgGrid.this); //i.setScaleType(ImageView.ScaleType.FIT_CENTER); i.setLayoutParams(new GridView.LayoutParams(48, 48)); i.setScaleType(ImageView.ScaleType.CENTER_CROP); i.setPadding(5, 5, 5, 5); } else { i = (ImageView) convertView; } i.setImageResource(imageIDs[position]); return i; } public final int getCount() { return imageIDs.length; } public final Object getItem(int position) { return imageIDs[position]; } public final long getItemId(int position) { return position; } } } 

El archivo xml:

 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/imgGrid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:columnWidth="48px" android:stretchMode="columnWidth" android:gravity="center" android:minHeight="48px" android:minWidth="48px" /> 

Clase utilizada por la clase ActivityImgGrid:

 public class ExtraSmartApplication extends Application { //private static final String APP_CREDENTIALS = null; private Integer selCategoryImg; private boolean isCardImageNew = false; private byte[] cardImage = null; private Integer[] categoryImgs = { R.drawable.cricket, R.drawable.football, R.drawable.vollyball }; private boolean isCatCreated = false; public ExtraSmartApplication() { super(); } @Override public void onTerminate() { super.onTerminate(); } public Integer getSelCategoryIcon() { return this.selCategoryImg; } public Integer[] getCategoryIcons() { return this.categoryImgs; } public void setSelCategoryIcon(int position) { this.selCategoryImg = categoryImgs[position]; } public void setCatCreated(boolean isCatCreated) { this.isCatCreated = isCatCreated; } public boolean isCatCreated() { return isCatCreated; } public void setCardImageNew(boolean isCardImageNew) { this.isCardImageNew = isCardImageNew; } public boolean isCardImageNew() { return isCardImageNew; } public void setCardImage(byte[] cardImage) { this.cardImage = cardImage; } public byte[] getCardImage() { return cardImage; } } 

Sería mejor si u puede compartir algunos fragmentos de código …

De todos modos, en lo que concierne a ClassCastException , significa que está declarando una variable de algún tipo y asignándola a otro tipo que haya definido en un archivo xml de diseño …

Por ejemplo, en el xml que puede haber tenido:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:layout_height="wrap_content" android:id="@+id/btn1" android:layout_width="wrap_content"> </Button> </LinearLayout> 

Pero al conectar el componente al código:

 ImageView img1 = (ImageView)context.findViewById(R.id.btn1); 

Esto disparará un bcoz ClassCastException que está lanzando un botón a una variable ImageView que es como u entender no posible!

Si esto no resuelve su problema, entonces será mejor si u publicar algunos fragmentos de código después de averiguar qué fragmento de código provoca el error!

 ExtraSmartApplication application = (ExtraSmartApplication) getApplication(); 

Añadir:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="ExtraSmartApplication"> 

En su archivo manifest.xml de Android.

  • robustez del proveedor de contenido android en la caída del proveedor
  • Obtener número de teléfono para varios destinatarios en android
  • Error Cursor.moveToNext
  • how / where para llamar a notifyDataSetChanged de otro fragmento
  • Android: Observación de SMS para subprocesos eliminados
  • ¿Puede alguien confirmar que Adobe Reader funciona con un proveedor de contenido personalizado?
  • Android cuando usar ContentResolver applyBatch o BulkInsert
  • ¿Error al insertar datos en Proveedor de contenido propio?
  • ¿Cómo implementar consultas complejas utilizando un proveedor de contenido?
  • Compartir imágenes desde el almacenamiento interno mediante FileProvider
  • ¿Cómo insertar correctamente valores en la base de datos SQLite utilizando el método insert () de ContentProvider mediante un CursorLoader?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.