我正在开发一个项目,其中点击gridview中的图像在ImageView中打开该图像,我从此网站获取此代码http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/,因此我修改了FullImageActivity.java并添加了一个按钮来设置图像作为背景,但每次我点击按钮,它只是强制关闭我的应用程序,PS我已经在清单中添加了权限
这是我的代码
package com.example.androidhive;
import java.io.IOException;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class FullImageActivity extends Activity {
private WallpaperManager imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.full_image);
// get intent data
Intent i = getIntent();
// Selected image id
int position = i.getExtras().getInt("id");
ImageAdapter imageAdapter = new ImageAdapter(this);
ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
imageView.setImageResource(imageAdapter.mThumbIds[position]);
}
public void setaswall(View view) { // SET AS WALLPAPER BUTTON
// TODO Auto-generated method stub
WallpaperManager myWallpaperManager
= WallpaperManager.getInstance(getApplicationContext());
try {
Bitmap bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();
if(bitmap!=null)
myWallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
答案 0 :(得分:0)
我想你也可能试图像这样使用它:
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.full_image);
// get intent data
Intent i = getIntent();
// Selected image id
int position = i.getExtras().getInt("id");
ImageAdapter imageAdapter = new ImageAdapter(this);
mImageView = (ImageView) findViewById(R.id.full_image_view);
mImageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), imageAdapter.mThumbIds[position]));
}
public void setaswall(View view) {
WallpaperManager wm = WallpaperManager.getInstance(this);
try {
final Bitmap bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
if (bitmap != null) {
wm.setBitmap(bitmap);
}
} catch (final IOException e) {
e.printStackTrace();
}
}
并确保您已在AndroidManifest中包含设置壁纸权限。
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
答案 1 :(得分:0)
在此声明一个名为“imageView”的字段,但类型为WallpaperManager
:
private WallpaperManager imageView;
然后你声明一些本地的imageView:
ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
最后,至少你要从你从未初始化的字段 imageView
中获取Drawable:
Bitmap bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();
这将引发一个异常,您稍后会捕获并打印stacktrace
==&GT; 解决方案:正确初始化 字段 imageView,不要创建隐藏字段的本地var。
答案 2 :(得分:0)
很简单我认为您可能忘记在您的清单文件中添加权限
只需在您的清单文件中添加
<uses-permission android:name="android.permission.SET_WALLPAPER"/>