来自一个类的Image Button的setImageResource

时间:2016-08-26 00:00:32

标签: android android-activity constructor android-context android-imagebutton

在Android M中,我需要将ImageButton设置为drawable文件夹中的特定资源。 哪个将在声明视图的MainActivity中起作用。

我有second Activity需要使用该方法调用类 使用switch语句选择正确的资源。

我无法将ImageButton的引用正确地引入到被调用的类中。

我正在使用构造函数在类中设置上下文并使ImageButton mRecordImageButton对象成为公共对象,但仍然具有对mRecordImageButton的对象错误的未解析引用。 (unable to resolve symbol)。

这是该类中的代码。 在MainActivity

public ImageButton mRecordImageButton;

ImageButtonProperties.java类文件

 package twistlogic.com.miwidget;

    import android.app.Activity;
    import android.content.Context;
    import android.widget.ImageButton;

    public class ImageButtonProperties {
        Context context;

        public ImageButtonProperties() {
                this.context = context;                 // constructor
            }

        public void ImageButtonSym(EnumLists enumList) {

            switch (enumList) {
                case VIDEO_OFF:
                    (ImageButton) ((Activity)context).mRecordImageButton.setImageResource(R.drawable.ic_bluetooth_black_18dp);
                    break;
             default:
            }


        }

    }

感谢您的帮助。

/////////////////////////////////////////////// ///////////////////////////////

感谢您的帮助,我只是在学习,所以感谢您的帮助。 当我使用调试器检查时,现在正在调用构造函数,但是我仍然没有解析对该按钮的引用。

按照建议调用构造函数,我在setContentView

之后调用它

的setContentView(twistlogic.com.miwidget.R.layout.activity_camera2_video_image); final ImageButtonProperties properties = new ImageButtonProperties((this));

在我的主要课程中     private ImageButton mRecordImageButton; 我也试过公开,但那也行不通了

我致电:     properties.ImageButtonSym(AppButtonStates.VIDEO_REC_ON);

被叫类是

public class ImageButtonProperties {     上下文上下文;

public ImageButtonProperties(Context context) {
    this.context = context;          // constructor
}

public void ImageButtonSym(int appButtonStates) {
    switch (appButtonStates) {
        case AppButtonStates.VIDEO_REC_ON:
            (ImageButton) ((Activity)context).mRecordImageButton.setImageResource(twistlogic.com.miwidget.R.mipmap.btn_video_online);
            break;

    }
}

}

我正在使用'如何从另一个活动中更改文本',但我仍然将mRecordImageButton作为未解析的引用。也许我不理解Context对象。我想如果我有上下文,那么视图中的所有对象都是可访问的。这是理解上的错误吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

你的构造函数缺少一个参数,它应该看起来像这样:

 public ImageButtonProperties(Context context) {
        this.context = context; 
    }

并在Activity中调用构造函数,如下所示:

ImageButtonProperties properties = new ImageButtonProperties(this);

现在的方式,你只是一无所获。如果皮棉没有给你一个警告,我会感到惊讶。