错误:更新的Android Studio之后没有合适的构造从0.6.1至0.8.9 [英] Error: no suitable constructor after update Android Studio from 0.6.1 to 0.8.9
问题描述
我有这个错误:
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工作室出来后,从0.6.1到0.8.9,我没那个错误升级之前,事实上,code,我把下面的更新之前,完美地工作。
至多,我有对的Nexus 5的code中的应用,并没有任何问题。
Viewpager_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>
Viewpager_activity.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
该错误是在该行和列是有写本,就是ImageViewTouch语境中的:
The error is in this line and the column is where there is written "this", that is, the contex of ImageViewTouch:
final ImageViewTouch imageViewTouch = new ImageViewTouch(this);
我试过也是这些codeS:
I've tried also these codes:
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 code是这个
And the java code is this
Viewpager_adapter.java
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);
}
}
和错误的路线是这样的:
And the line of error is this:
ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext());
更具体而言,在code字符串的这一部分:
And more specifically , this part of the code string:
new ImageViewTouch(container.getContext());
的我更新Android工作室的一切工作顺利前重复。的
由于提前,如果你需要其他的codeS把它们
I repeat before updating Android Studio everything worked smoothly.
Thanks in advance, and if you need other codes put them
推荐答案
试试这个办法,希望这将帮助你解决你的问题。
在ImageViewTouch两级重载的构造函数定义如下:
In ImageViewTouch class two overloaded constructor define like :
ImageViewTouch(Context,AttributeSet) and ImageViewTouch(Context,AttributeSet,int)
和您正在尝试使用此构造中未ImageViewTouch类中定义初始化ImageViewTouch对象:
And your are trying to initialize ImageViewTouch object using this constructor which is not define in ImageViewTouch class:
ImageViewTouch(Context)
因此,尝试用一个重载的构造函数,如:
So try to use one overloaded constructor like :
new ImageViewTouch(container.getContext(),null,0) or new ImageViewTouch(container.getContext(),null)
在ViewPager喜欢的:
In ViewPager like :
ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null); or ImageViewTouch imageViewTouch = new ImageViewTouch(container.getContext(),null,0);
这篇关于错误:更新的Android Studio之后没有合适的构造从0.6.1至0.8.9的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!