重写了EditText后发生异常了,求教
本帖最后由 zhangzl4321 于 2013-04-17 13:34:33 编辑 我重写了EditText:
package com.example.helloandroid;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.widget.EditText;
public class EditTextExt extends EditText {
public EditTextExt(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setTextSize(18);
paint.setColor(Color.GRAY);
canvas.drawText("输入提示文本", 2, getHeight() / 2 + 5, paint);
super.onDraw(canvas);
}
}
然后以在activity_main.xml中引用了上面的EditTextExt:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.helloandroid.EditTextExt
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
但是在MainActivity中setContentView的时候会抛出异常:
public class MainActivity extends Activity {
public static String APP = "helloworld";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.i(APP, "I am helloworld");
try {
setContentView(R.layout.activity_main);
}
catch (Exception e) {
e.printStackTrace();
Log.i(APP,"发生异常了" + e);
}
Log.i(APP, "I have been executed.");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}异常信息是这样的:
04-17 05:21:34.795: I/helloworld(308):
发生异常了android.view.InflateException: Binary XML file line #7: Error inflating class com.example.helloandroid.EditTextExt
异常 Android EditText
[解决办法]
把另外两个构造方法补上试试。
EditTextExt(Context context, AttributeSet attrs)
EditTextExt(Context context, AttributeSet attrs, int defStyle)
[解决办法]
要补上EditTextExt(Context context, AttributeSet attrs)
的,在解析XML构造这个View的时候会调用这个函数的