Java 错误:将Android Studio从0.6.1更新到0.8.9后,没有合适的构造函数

Java 错误:将Android Studio从0.6.1更新到0.8.9后,没有合适的构造函数,java,android,android-studio,Java,Android,Android Studio,我发现了这个错误: Error:(78, 56) error: no suitable constructor found for ImageViewTouch(Viewpager_activity) constructor ImageViewTouch.ImageViewTouch(Context,AttributeSet,int) is not applicable (actual and formal argument lists differ in length) constructor

我发现了这个错误:

Error:(78, 56) error: no suitable constructor found for ImageViewTouch(Viewpager_activity)
constructor ImageViewTouch.ImageViewTouch(Context,AttributeSet,int) is not applicable
(actual and formal argument lists differ in length)
constructor ImageViewTouch.ImageViewTouch(Context,AttributeSet) is not applicable
(actual and formal argument lists differ in length)
但是这个错误我是在Android Studio从0.6.1升级到0.8.9之后才出现的,在升级之前我没有这个错误,事实上,我在下面输入的代码在升级之前工作得非常好。 最多,我在Nexus5上有这个代码的应用程序,没有问题。

Viewpager\u layout.xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#00A600"
        android:id="@+id/layoutesterno">

        <com.ruar.imagegallery.app.ImageViewTouchViewPager
            android:id="@+id/imagepager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@+id/relativeLayout" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:layout_gravity="bottom"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/relativeLayout"
            android:background="#008A00">

            <ImageButton
                android:layout_width="60dp"
                android:layout_height="fill_parent"
                android:id="@+id/saveBtn"
                android:background="@drawable/save"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <ImageButton
                android:layout_width="60dp"
                android:layout_height="62dp"
                android:id="@+id/shareBtn"
                android:background="@drawable/share"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_centerInParent="true"
                android:layout_alignTop="@+id/saveBtn"/>

            <ImageButton
                android:layout_width="70dp"
                android:layout_height="62dp"
                android:id="@+id/setasBtn"
                android:background="@drawable/setaswallpaper"
                android:layout_alignTop="@+id/saveBtn"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />

        </RelativeLayout>

    <ImageButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/info"
        android:background="@drawable/info"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <ImageButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/bugimg"
        android:background="@drawable/bug"
        android:layout_below="@+id/info"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="20dp"
        android:layout_alignLeft="@+id/info"
        android:layout_alignStart="@+id/info" />

</RelativeLayout>
我也尝试过这些代码:

final ImageViewTouch imageViewTouch = new ImageViewTouch(Viewpager_activity.this);
final ImageViewTouch imageViewTouch = new ImageViewTouch(getApplicationContext());
但它并没有改变任何事情,我仍然得到了那个错误

另一个错误是:

Error:(36, 41) error: no suitable constructor found for ImageViewTouch(Context)
constructor ImageViewTouch.ImageViewTouch(Context,AttributeSet,int) is not applicable
(actual and formal argument lists differ in length)
constructor ImageViewTouch.ImageViewTouch(Context,AttributeSet) is not applicable
(actual and formal argument lists differ in length)

java代码是这样的

Viewpager\u adapter.java

public class Viewpager_activity extends Activity
{
    int position;
    int img_id;
    Grid_adapter grid_adapter;
    String nomeimmagine;
    int i;
    final List<ImageViewTouch> images = new ArrayList<ImageViewTouch>();
    public static  String[][] galleryArrayThumb = ImmaginiThumb.thumbs;

        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.viewpager_layout);

            ImageLoader_Grid imageLoader = new ImageLoader_Grid(this.getApplicationContext());

            final Intent intent = getIntent();
            img_id = (Integer) intent.getExtras().get("img");
            position = (Integer) intent.getExtras().get("id");

            grid_adapter = new Grid_adapter(this, galleryArrayThumb[img_id]);
            nomeimmagine = LazyAdapter.titoli[img_id];
            setTitle(nomeimmagine);

            for (i = 0; i < grid_adapter.getCount(); i++)
            {
                 final ImageViewTouch imageViewTouch = new ImageViewTouch(this);

                 Picasso.with(Viewpager_activity.this)
                        .load(galleryArrayThumb[img_id][i])
                        .fit()
                        .centerInside()
                        .placeholder(R.drawable.loading)
                        .into(imageViewTouch);

                //imageLoader.DisplayImage(galleryArrayThumb[img_id][i], imageViewTouch);
                images.add(imageViewTouch);
            }

            ViewPager viewPager = (ImageViewTouchViewPager) findViewById(R.id.imagepager);
            viewPager.setAdapter(new Viewpager_adapter(images));
            viewPager.setCurrentItem(position);
            viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
            {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
                {
                    try
                    {
                        trimCache(Viewpager_activity.this);
                        Log.i("VP_cache", "Cache liberata");
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();

                    }
                }

                @Override
                public void onPageSelected(int position1) {
                    position = position1;
                }

                @Override
                public void onPageScrollStateChanged(int state) {}
            });
}//fine viewpager_activity
public class Viewpager_adapter extends PagerAdapter
{
    private List<ImageViewTouch> imageViewTouches;

    public Viewpager_adapter(List<ImageViewTouch> imageViewTouches)
    {
        this.imageViewTouches = imageViewTouches;
    }

    @Override
    public int getCount() {
        return imageViewTouches.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext());
        imageViewTouch = (ImageViewTouch) imageViewTouches.get(position);
        imageViewTouch.setScaleType(ImageViewTouch.ScaleType.MATRIX);

        container.addView(imageViewTouch);

        return imageViewTouch;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ImageViewTouchViewPager pager = (ImageViewTouchViewPager) container;
        View recycledView = (View) object;
        pager.removeView(recycledView);
    }
}


更具体地说,这部分代码字符串:

new ImageViewTouch(container.getContext());

在更新Android Studio之前,我重复一遍,一切都很顺利。
提前感谢,如果您需要其他代码,请尝试使用这种方式,希望这将帮助您解决问题。

在ImageViewTouch类中,重载构造函数定义如下:

ImageViewTouch(Context,AttributeSet) and ImageViewTouch(Context,AttributeSet,int)
您正在尝试使用此构造函数初始化ImageViewTouch对象,该构造函数未在ImageViewTouch类中定义:

ImageViewTouch(Context)
因此,请尝试使用一个重载构造函数,如:

new ImageViewTouch(container.getContext(),null,0) or  new ImageViewTouch(container.getContext(),null)
在ViewPager中,如:

ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null); or ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null,0);

什么是ImageViewTouchViewPager?我可以用它来缩放图片。什么是ImageViewTouch?是您的自定义类,然后发布代码。ImageViewTouchViewPager它是一个自定义Viewpager,ImageViewTouch是ImageViewZoom的一个类,是一个尝试此新ImageViewTouch的库(container.getContext(),null,0);或新的ImageViewTouch(container.getContext(),null);在ImageViewTouch类中,构造函数未仅使用上下文参数进行声明。编译,但由于某些原因图像不会显示。谢谢你,回答得好
new ImageViewTouch(container.getContext(),null,0) or  new ImageViewTouch(container.getContext(),null)
ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null); or ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null,0);