我在一个名为 pics 的数组中有许多图像。我在哪里调用壁纸管理器?请告诉我单击图像视图时如何创建墙纸。我知道我必须在 imageview 上创建一个 OnCickLisener,然后使用壁纸管理器来调用图像。但是由于图像位于数组中,我如何调用正在单击的特定图像?因为它不会在 R.drawable . 这是我的代码:
public class Rd extends Activity  {
    Integer [] pics= {
        R.drawable.rd1,
        R.drawable.rd2,
        R.drawable.rd3,
        R.drawable.rd4,
        R.drawable.rd5,
    };
    ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dravid);
        Gallery ga = (Gallery)findViewById(R.id.Gallery01);
    ga.setAdapter(new ImageAdapter(this));
    imageView = (ImageView)findViewById(R.id.ImageView01);
    ga.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                Toast.makeText(getBaseContext(), 
            "You have selected picture " + (arg2+1) +"of Rd", 
                        Toast.LENGTH_SHORT).show();
                imageView.setImageResource(pics[arg2]);
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_dd, menu);
        return true;
    }
     public class ImageAdapter extends BaseAdapter {
    private Context ctx;
    int imageBackground;
    public ImageAdapter(Context c) {
            ctx = c;
            TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
            imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
            ta.recycle();
        }
        @Override
    public int getCount() {
        return pics.length;
    }
    @Override
    public Object getItem(int arg0) {
        return arg0;
    }
    @Override
    public long getItemId(int arg0) {
        return arg0;
    }
    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        ImageView iv = new ImageView(ctx);
        iv.setImageResource(pics[arg0]);
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        iv.setLayoutParams(new Gallery.LayoutParams(200,120));
        iv.setBackgroundResource(imageBackground);
        return iv;
    }
   }
}
这是强制关闭的堆栈跟踪:
2-26 21:22:02.817: I/Process(440): Sending signal. PID: 440 SIG: 9
02-26 21:23:04.677: D/dalvikvm(472): GC_EXTERNAL_ALLOC freed 53K, 52% free 2586K/5379K, external 1012K/1038K, paused 70ms
02-26 21:23:09.967: D/AndroidRuntime(472): Shutting down VM
02-26 21:23:09.967: W/dalvikvm(472): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-26 21:23:09.990: E/AndroidRuntime(472): FATAL EXCEPTION: main
02-26 21:23:09.990: E/AndroidRuntime(472): java.lang.SecurityException: Access denied to process: 472, must have permission android.permission.SET_WALLPAPER
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.os.Parcel.readException(Parcel.java:1322)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.os.Parcel.readException(Parcel.java:1276)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.app.IWallpaperManager$Stub$Proxy.setWallpaper(IWallpaperManager.java:179)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.app.WallpaperManager.setResource(WallpaperManager.java:448)
02-26 21:23:09.990: E/AndroidRuntime(472):  at com.wallpaper.rahul.dravid.RahulDravid$1$1.onClick(RahulDravid.java:141)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.view.View.performClick(View.java:2485)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.view.View$PerformClick.run(View.java:9080)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.os.Handler.handleCallback(Handler.java:587)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.os.Looper.loop(Looper.java:123)
02-26 21:23:09.990: E/AndroidRuntime(472):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-26 21:23:09.990: E/AndroidRuntime(472):  at java.lang.reflect.Method.invokeNative(Native Method)
02-26 21:23:09.990: E/AndroidRuntime(472):  at java.lang.reflect.Method.invoke(Method.java:507)
02-26 21:23:09.990: E/AndroidRuntime(472):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-26 21:23:09.990: E/AndroidRuntime(472):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-26 21:23:09.990: E/AndroidRuntime(472):  at dalvik.system.NativeStart.main(Native Method)
02-26 21:28:10.137: I/Process(472): Sending signal. PID: 472 SIG: 9