0

我正在使用 Helper.sync_settting_2(img_sync, context) 设置相对布局的 imageView 的背景。

 try {
            final RelativeLayout layout_img_sync = (RelativeLayout) findViewById(R.id.relative_lay_6);
            final ImageView img_sync = (ImageView) findViewById(R.id.img_sync);
            layout_img_sync.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Helper.sync_settting_2(img_sync, context);
                }
            });
        } catch (Exception e) {
    };  

这里是函数 Helper.sync_settting_2(ImageView sync, Context ct)。

 public static void sync_settting_2(ImageView sync, Context ct) {
    Toast.makeText(ct, "Sync Started", Toast.LENGTH_LONG).show();
    getJobData getJobs = new getJobData(null);
    sync.setBackground(ct.getResources().getDrawable(
            com.org.courier.R.drawable.sync_image_orange));
    getJobs.setOnApiLIstner(new onApiCompleted() {
        @Override
        public void onApiResults(ArrayList<job_entity> events_list) {
            getMessageData getMessage = new getMessageData(null);
            getMessage.setOnApiLIstner(new getMessageData.onApiCompleted() {

                @Override
                public void onApiResults(
                        ArrayList<message_entity> events_list) {
                    getContactData getContact = new getContactData(null);
                    getContact
                            .setOnApiLIstner(new getContactData.onApiCompleted() {

                                @Override
                                public void onApiResults(
                                        ArrayList<contact_entity> events_list) {
                                }
                            });
                    getContact.execute();
                }
            });
            getMessage.execute();
        }
    });
    getJobs.execute();
    sync.setBackground(ct.getResources().getDrawable(
            com.org.courier.R.drawable.sync_image_03));
    Toast.makeText(ct, "Sync Finished", Toast.LENGTH_SHORT)
    .show();
}

它显示错误

“java.lang.NoSuchMethodError:android.widget,ImageView.setBackground”

4

1 回答 1

12

View.setBackground 直到 API 16 才被添加。我自己也遇到了这个问题,并且我一生都无法弄清楚它为什么会发生,因为我没有收到任何新的 API 警告。

如果您希望它与所有版本的 Android 兼容,您应该使用:

setBackgroundResource()setBackgroundDrawable()

但是,对于 ImageView,您应该设置 SRC,而不是背景:

setImageResource() 或 setImageDrawable()

于 2013-09-06T15:22:39.253 回答