开发者

Android gallery drawable error

I am trying to implement the android gallery example from http://developer.android.com/resources/tutorials/views/hello-gallery.html

I get this error int he following lines

       R.drawable.sample_1 cannot be resolved
        R.drawable.sample_2 cannot be resolved,
        R.drawable.sample_3 cannot be resolved,
        R.drawable.sample_4 cannot be resolved,
        R.drawable.sample_5 cannot be resolved,
        R.drawable.sample_6 cannot be resolved,
        R.drawable.sample_7 cannot be resolved

How to resolve this issue .The code is shown below.

HelloGallery.java

  package com.HelloGallery;

  import android.app.Activity;
  import android.content.Context;
  import android.content.res.TypedArray;
  import android.os.Bundle;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.BaseAdapter;
  import android.widget.Gallery;
  import android.widget.ImageView;
  import android.widget.Toast;
  import android.widget.AdapterView.OnItemClickListener;
  import android.R.drawable;

  public class HelloGalleryActivity extends Activity {
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     Gallery g = (Gallery) findViewById(R.id.gallery);
     g.setAdapter(new ImageAdapter(this));

     g.setOnItemClickListener(new OnItemClickListener() {
         public void onItemClick(AdapterView parent, View v, int position, long id) {
        Toast.makeText(HelloGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();
         }
     });


      }

      public class ImageAdapter extends BaseAdapter {
     int mGalleryItemBackground;
     private Context mContext;

     private Integer[] mImageIds = {
        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
     };

     public ImageAdapter(Context c) {
         mContext = c;
         TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
         mGalleryItemBackground = a.getResourceId(
            R.styleable.HelloGallery_android_galleryItemBackground, 0);
         a.recycle();
     }

     public int getCount() {
         return mImageIds.length;
     }

     public Object getItem(int position) {
         return position;
     }

     public long getItemId(int position) {
         return position;
     }

     public View getView(int position, View convertView, ViewGroup parent) {
         ImageView i = new ImageView(mContext);

         i.setImageResource(mImageIds[position]);
         i.setLayoutParams(new Gallery.LayoutParams(150, 100));
         i.setScaleType(ImageView.ScaleType.FIT_XY);
         i.setBackgroundResource(mGalleryItemBackground);

         return i;
     }
      }
  }

main.mxml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
  <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello"
      />
      <Gallery xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/gallery"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
  />
  </LinearLayout>

attrs.mxml

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
      <declare-styleable name="HelloGallery">
     <attr name="android:galleryItemBackground" />
      </declare-styleable>
  </resources>

R.java

  /* AUTO-GENERATED FILE.  DO NOT MODIFY.
   *
   * This class was automatically generated by the
   * aapt tool from the resource data it found.  It
   * should not be modified by hand.
   */

  package com.HelloGallery;

  public final class R {
      public static final class attr {
      }
      public static final class drawable {
     public static final int icon=0x7f020000;
      }
      public static final class id {
     public static final int gallery=0x7f050000;
      }
      public static final class layout {
     public static final int main=0x7f030000;
      }
      public static final class string 开发者_如何学运维{
     public static final int app_name=0x7f040001;
     public static final int hello=0x7f040000;
      }
      public static final class styleable {
     /** Attributes that can be used with a HelloGallery.
        <p>Includes the following attributes:</p>
        <table>
        <colgroup align="left" />
        <colgroup align="left" />
        <tr><th>Attribute</th><th>Description</th></tr>
        <tr><td><code>{@link #HelloGallery_android_galleryItemBackground com.HelloGallery:android_galleryItemBackground}</code></td><td></td></tr>
        </table>
        @see #HelloGallery_android_galleryItemBackground
      */
     public static final int[] HelloGallery = {
         0x0101004c
     };
     /**
       <p>This symbol is the offset where the {@link com.HelloGallery.R.attr#android_galleryItemBackground}
       attribute's value can be found in the {@link #HelloGallery} array.
       @attr name android:android_galleryItemBackground
     */
     public static final int HelloGallery_android_galleryItemBackground = 0;
      };
  }


You haven't got files in your /res/drawable folder with the names

sample_1.png ... _7 etc

These are needed to populate the widget, you are declaring you use them here:

 private Integer[] mImageIds = {
    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
 };

This is an array of integers, each integer is an ID relating to a drawable resource that you should have created into your /res/drawable folder.

If you want to get it to work quickly just copy and paste the icon.png file that is already in the /drawable/ folder and rename the paste sample_1.png, sample_2.png, sample_3.png etc

If you did have these file they would be linked in your R.java class file

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜