2010-10-06 7 views
3

Ai-je raté quelque chose ici?Pourquoi le code issu des tutoriels Android SDK ne fonctionne-t-il pas?

Je suis les instructions exactement sur cette page (et certains des autres tutoriels), mais ils semblent toujours manquer certaines informations clés car ils ne fonctionnent pas hors de la boîte.

J'ai ajouté un tas de paquets qui semblaient manquer, mais maintenant je suis coincé.

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

Resource Description Emplacement du chemin type conversion au format Dalvik échoué avec l'erreur 1 HelloGrid Unknown Android Emballage Problème

Et tout un tas de ces derniers pour chacun des drawable.sample_ * références

Description Emplacement du chemin de ressource Type R.drawable.sample_0 ne peut pas être résolu ImageAdapter.java/HelloGrid/src/com/example/ligne ImageAdapter 51 Java Problème

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 
    }; 
} 

Comme vous pouvez le voir, j'ai toutes les images chargées dans le répertoire/drawable alt text

+1

Pourriez-vous partager les erreurs que vous recevez? – EboMike

+1

Vous pourriez envisager de décrire les problèmes que vous rencontrez. À l'heure actuelle, c'est une diatribe, pas une question. – CommonsWare

+0

"Se retrouver avec des erreurs" - bien, comment pouvons-nous vous aider si vous ne pouvez pas nous dire quelles erreurs vous obtenez? – EboMike

Répondre

0

Il semble que les tutoriels manquent certaines des informations de package, mais Si vous utilisez Eclipse, il devrait gérer la plupart de cela pour vous.

3

Resource Description Emplacement du chemin type R.drawable.sample_0 ne peut pas être résolu ImageAdapter.java/HelloGrid/src/com/example/ligne 51 ImageAdapter Java Problème

Il vous manque vos ressources étirables. Cela a été couvert à l'étape n ° 2 dans le instructions supplied in the tutorial.

+0

btw http://meta.stackexchange.com/questions/9953/could-we-please-be-a-bit-nicer-to-the-noobs – qodeninja

+0

@codeninja: L'erreur que vous citez vient d'Android ne pas être en mesure de trouver les ressources pouvant être tirées. Ce n'est pas une hypothèse - c'est un fait. Les fichiers JPEG en question sont dans le fichier ZIP référencé à l'étape 2 dans les instructions. Ce n'est pas une hypothèse - c'est un fait. Maintenant, l'étape # 2 n'est pas particulièrement bien écrite, et ils ont bloqué un fichier .DS_Store dans l'archive ZIP sans raison valable. Essayez de faire un projet | Propre pour forcer une reconstruction, et assurez-vous que vous ne vous êtes pas retrouvé avec le fichier .DS_Store là aussi, car Android n'aime pas cela. – CommonsWare

+0

@codeninja: Je remarque également que vous avez choisi de supprimer un de vos commentaires. – CommonsWare

2

Enlever l'importation android.R;

Ceci confond Eclipses 'R;

C'est pourquoi il ne peut pas localiser les images.

En outre, vous pouvez simplement le placer dans les répertoires étirables pré-créés dans res (par exemple drawable-hdpi, etc.)

1

J'ai la solution:.

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 
     }; 
    } 
} 
2

J'ai eu ce problème aussi, et résolu par la fixation de cette ligne:

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

à

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

L'ajout d'importations a résolu le problème pour moi.
Et je trouve que réellement dans Eclipse ils peuvent être importés automatiquement:

« Tip: Une fois que vous avez collé exemple de code dans un projet Eclipse, appuyez sur Ctrl (ou Cmd) + Maj + O pour importer les paquets nécessaires »

Espérons que ce rafraîchissement a été manqué.