Java &引用;“构造函数未定义”;错误
我的代码:Java &引用;“构造函数未定义”;错误,java,android,constructor,Java,Android,Constructor,我的代码: public class ViewsActivity extends Activity implements OnClickListener { // private Integer[] ImgIds = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4 }; private LinearLayout mLinearLayout; private Gallery
public class ViewsActivity extends Activity implements OnClickListener
{
//
private Integer[] ImgIds = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4 };
private LinearLayout mLinearLayout;
private Gallery g;
private MediaPlayer mp;
private ImageView i;
private Thread th;
private Runnable viewUpdate;
private int m_index = 0;
private OnClickListener mImageListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
setContentView(R.layout.main);
g = (Gallery) findViewById(R.id.gallery1);
g.setAdapter(new ImageAdapter(v.getContext()));
g.setOnItemClickListener(mGalleryClickListener);
g.setOnItemSelectedListener(mGallerySelectedListener);
}
};
private OnItemSelectedListener mGallerySelectedListener = new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView adapter, View v, int i, long lng)
{
String descr = "";
switch(i)
{
case 0:
descr = "scena1";
break;
case 1:
descr = "scena2";
break;
case 2:
descr = "scena3";
break;
case 3:
descr = "scena4";
break;
case 4:
descr = "scena5";
break;
case 5:
descr = "scena6";
break;
case 6:
descr = "scena7";
break;
case 7:
descr = "scena8";
break;
case 8:
descr = "scena9";
break;
case 9:
descr = "scena10";
break;
}
Toast.makeText(ViewsActivity.this, descr, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView arg0)
{
}
};
private OnItemClickListener mGalleryClickListener = new OnItemClickListener()
{
public void onItemClick(AdapterView parent, View v, int position, long id)
{
switch(position)
{
case 0:
i.setImageResource(R.drawable.pic1);
break;
case 1:
i.setImageResource(R.drawable.pic2);
break;
case 2:
i.setImageResource(R.drawable.pic3);
break;
case 3:
i.setImageResource(R.drawable.pic4);
break;
case 4:
i.setImageResource(R.drawable.pic5);
break;
case 5:
i.setImageResource(R.drawable.pic6);
break;
case 6:
i.setImageResource(R.drawable.pic7);
break;
case 7:
i.setImageResource(R.drawable.pic8);
break;
case 8:
i.setImageResource(R.drawable.pic9);
break;
case 9:
i.setImageResource(R.drawable.pic10);
break;
}
setContentView(mLinearLayout);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mp = MediaPlayer.create(this, R.raw.song);
mp.start();
Gallery g = (Gallery) findViewById(R.id.gallery1);
g.setAdapter(new ImageAdapter(this));
g.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView parent, View v, int position, long id) {
if (position >= ImgIds.length) {
position = position % ImgIds.length;
}
// Toast.makeText(this, ""+position, Toast.LENGTH_SHORT).show();
}
});
}
//
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
public int getCount() {
return Integer.MAX_VALUE;
}
public Object getItem(int position) {
if (position >= ImgIds.length) {
position = position % ImgIds.length;
}
return position;
}
public long getItemId(int position) {
if (position >= ImgIds.length) {
position = position % ImgIds.length;
}
return position;
}
public View getView1(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
if (position >= ImgIds.length) {
position = position % ImgIds.length;
}
i.setImageResource(ImgIds[position]);
i.setLayoutParams(new LayoutParams(80, 80));
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
return i;
}
public int checkPosition(int position) {
if (position >= ImgIds.length) {
position = position % ImgIds.length;
}
return position;
final Button buttonavanti = (Button) findViewById(R.id.Avanti);
buttonavanti.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
g.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
}
});
final Button buttonindietro = (Button) findViewById(R.id.Indietro);
buttonindietro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
g.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null);
}
});
final Button buttonexit = (Button) findViewById(R.id.Exit);
buttonexit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mLinearLayout = new LinearLayout(this);
i = new ImageView(this);
i.setImageResource(R.drawable.pic1);
i.setAdjustViewBounds(true);
i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
mLinearLayout.addView(i);
mLinearLayout.setOnClickListener(mImageListener);
}
public void onClick(View v) {
// TODO Auto-generated method stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return null;
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
我在
mLinearLayout=new LinearLayout(this)
和I=new ImageView(this)
中遇到了一个“构造函数未定义”错误,这与创建没有参数Layout\u width和Layout\u height的视图或布局相同
您需要调用也将LayoutParams作为参数的构造函数并为其提供数据。看起来您正在从ImageAdapter调用
LinearLayout(上下文上下文)
,因此不能使用此
。您需要传递一个上下文,而ImageAdapter中的此
不引用上下文。使用本地声明的变量mContext
mLinearLayout = new LinearLayout(mContext)
i = new ImageView(mContext).
这会有用的
mLinearLayout = new LinearLayout(ViewsActivity.this);
+1很好的提示,当你在一个文件中编写多个类时,这是一个常见的错误…谢谢你的回复。现在它工作了,但同时它在“final Button buttonnavanti=(Button)findviewbyd(R.id.Avanti);”移动此代码
返回位置返回另一个错误代码>到函数底部公共int-checkPosition(int-position)
(或正确关闭该函数)。这是因为您已将return语句放在代码之前。。最后放上“返回位置”…非常感谢!工作完美,但现在当我运行程序时,它崩溃了,“应用程序视图应用程序(process net.learn2develop.AndroidViews)意外停止”