¿Por qué no funciona el código de los tutoriales de Android SDK fuera de la caja?

¿Me estoy perdiendo de algo?

Sigo las instrucciones exactamente en esta página (y algunos de los otros tutoriales), pero siempre parecen faltar alguna información clave, ya que no funcionan fuera de la caja.

He añadido un montón de paquetes que parecían estar desaparecidos, pero ahora estoy atascado.

http://developer.android.com/resources/tutorials/views/hello-gridview.html

Descripción Ruta de recursos Tipo de ubicación La conversión al formato Dalvik falló con error 1 HelloGrid Desconocido Android Packaging Problem

Y un montón de ellos para cada una de las referencias drawable.sample_ *

Descripción Ruta de recursos Tipo de ubicación R.drawable.sample_0 no se puede resolver ImageAdapter.java / HelloGrid / src / com / example / ImageAdapter línea 51 Java Problema

package com.example.HelloGrid; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import com.example.ImageAdapter.ImageAdapter; public class HelloGrid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this)); gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText(HelloGrid.this, "" + position, Toast.LENGTH_SHORT).show(); } }); } } package com.example.ImageAdapter; import android.R; import android.R.drawable; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } // create a new ImageView for each item referenced by the Adapter public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } // references to our images private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 }; } 

Como se puede ver, tengo todas las imágenes cargadas en el directorio / drawable texto alternativo

Parece que los tutoriales están perdiendo parte de la información del paquete, pero si está utilizando eclipse debería manejar la mayor parte de eso para usted.

Descripción Ruta de recursos Tipo de ubicación R.drawable.sample_0 no se puede resolver ImageAdapter.java / HelloGrid / src / com / example / ImageAdapter línea 51 Java Problema

Te estás perdiendo tus recursos disponibles. Eso fue cubierto en el paso # 2 en las instrucciones suministradas en el tutorial .

Eliminar import android.R;

Esto confunde el R de Eclipses;

Es por eso que no puede localizar las imágenes.

Además, simplemente puede colocarlo dentro de los directorios dibujables pre-creados en res. (Por ejemplo, drawable-hdpi, etc.)

Tuve este problema también, y lo resolvió mediante la fijación de esta línea:

 Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); 

a

 Toast.makeText(HelloGridViewActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 

Tengo la solución:

 package com.gridview.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.GridView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Toast; import android.widget.BaseAdapter; import android.content.Context; import android.view.ViewGroup; import android.widget.ImageView; public class HelloGridView extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this)); gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); } }); } public class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } // create a new ImageView for each item referenced by the Adapter public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } // references to our images private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 }; } } 

La adición de importaciones resolvió el problema para mí.
Y me enteré de que en realidad en Eclipse pueden ser importados automáticamente:

"Sugerencia: Después de haber pegado código de ejemplo en un proyecto Eclipse, presione Ctrl (o Cmd) + Mayús + O para importar los paquetes requeridos"

Espero que esto refresque lo que se han perdido.

  • No se puede detectar la compatibilidad del dispositivo. Seleccione un dispositivo de destino
  • Android: uso de la batería de cada aplicación
  • Problemas de advertencia de Dx con el último SDK de Android
  • Error en Facebook sdk de Android durante el inicio de sesión
  • ¿Cómo instalar facebook api en el emulador en Windows 7?
  • Adt eclipse bundle 02-07-2014 ACTUALIZACIÓN
  • Android 2.1 vs 2.2
  • Botones de hardware AVD no habilitados
  • Honeycomb Android emulador es perro lento - se manejará antes del lanzamiento oficial?
  • Aplicación que se estrella en Android API menos de 5.0 (piruleta)
  • Conexión de Android OpenVPN
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.