启动活动自定义首选项android

时间:2014-07-06 19:00:32

标签: android android-activity preferences

我有一个由四个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);

1 个答案:

答案 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);