pics という配列に多数の画像があります。wallpapermanager はどこで呼び出せますか?? 画像ビューをクリックした時の壁紙の作り方を教えてください。imageview で OnCickLisener を作成し、wallpapermanager を使用して image.but を呼び出す必要があることはわかっていますが、画像は配列内にあるため、クリックされている特定の画像を呼び出すにはどうすればよいですか? . これが私のコードです:
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