我有一个由四个imageView组成的自定义首选项。我想在点击4个imageViews中的第4个时启动一个活动。
public class ImagePreference4Locks extends Preference {
public ImagePreference4Locks(final Context context, final AttributeSet attrs,
final int defStyle) {
super(context, attrs, defStyle);
this.setLayoutResource(R.layout.imagepref4locks);
}
@Override
protected void onBindView(View view) {final Context m = this.getContext();
super.onBindView(view);
final ImageView thumb_1 = (ImageView) view.findViewById(R.id.thumb_1);
final ImageView thumb_2 = (ImageView) view.findViewById(R.id.thumb_2);
final ImageView thumb_3 = (ImageView) view.findViewById(R.id.thumb_3);
final ImageView thumb_4 = (ImageView) view.findViewById(R.id.thumb_4);
.........
if (thumb_4 != null) {
thumb_4.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/////////////////////////////////////////////
Start Activity here:
}}
我怎样才能在这里开展活动,因为我无法获得背景.......
使用此功能无效:
Intent cc=new Intent(this.getContext(),HomeActivity.class);
this.getContext().startActivity(cc);
答案 0 :(得分:1)
在构造函数中,您被迫传递上下文,那么为什么不创建私有变量,例如
private static Context mContext;
然后你在那里初始化它?
public ImagePreference4Locks(final Context context, final AttributeSet attrs,
final int defStyle) {
super(context, attrs, defStyle);
mContext = context;
this.setLayoutResource(R.layout.imagepref4locks);
}
现在这段代码可以正常工作
Intent cc = new Intent(mContext, HomeActivity.class);
mContext.startActivity(cc);