Java 无法在画布上绘制编辑文本
我正试图在位图上写入文本,我需要一个edittex来检查键盘的输入。 我在画布上找到draw EditText的代码,但返回null:Java 无法在画布上绘制编辑文本,java,android,canvas,bitmap,Java,Android,Canvas,Bitmap,我正试图在位图上写入文本,我需要一个edittex来检查键盘的输入。 我在画布上找到draw EditText的代码,但返回null: Attempt to invoke virtual method 'void android.widget.EditText.setDrawingCacheEnabled(boolean)' on a null object reference 编辑:全班 我该怎么做呢?我想您是在系统调用draw方法后创建了editText对象。 确保在自定义视图的构造函
Attempt to invoke virtual method 'void android.widget.EditText.setDrawingCacheEnabled(boolean)' on a null object reference
编辑:全班
我该怎么做呢?我想您是在系统调用draw方法后创建了editText对象。
确保在自定义视图的构造函数中实例化editText 我认为您正在系统调用draw方法后创建editText对象。
确保在自定义视图的构造函数中实例化editText 它编译吗?或者这个错误是一个运行时错误?你能提供完整的源代码吗?@Itamagreen当我把它的类称为我的应用程序时crashes@MREZA现在我尝试在引用的空对象上调用虚拟方法“boolean android.graphics.Bitmap.isRecycled()”,是否编译?或者这个错误是一个运行时错误?你能提供完整的源代码吗?@Itamagreen当我把它的类称为我的应用程序时crashes@MREZA现在我尝试在空对象引用上调用虚拟方法“boolean android.graphics.Bitmap.isRecycled()”
public class TextMenu {
private final Toolbox toolbox;
private final AppPanel appPanel;
private final Context context;
private final MainActivity mainActivity;
private final Resources resources;
private Bitmap textTool, Click, textPlace;
private final float xscaleFactor, yscaleFactor;
private boolean allowDraw;
private EditText editText;
public TextMenu(Context context, Resources resources, float xscaleFactor, float yscaleFactor, Toolbox toolbox, AppPanel appPanel, MainActivity mainActivity) {
this.xscaleFactor = xscaleFactor;
this.yscaleFactor = yscaleFactor;
this.resources = resources;
this.toolbox = toolbox;
this.appPanel = appPanel;
this.context = context;
this.mainActivity = mainActivity;
textPlace = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(resources, R.drawable.text_place), (int) (xscaleFactor * 93), (int) (yscaleFactor * 193), true);
textTool = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(resources, R.drawable.text_menu), (int) (xscaleFactor * 480), (int) (yscaleFactor * 100), true);
Click = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(resources, R.drawable.tools_click), (int) (xscaleFactor * 80), (int) (yscaleFactor * 80), true);
editText = new EditText(context);
editText.setText("My Text");
editText.setWidth(180);
editText.setBackgroundColor(Color.WHITE);
}
public void draw(Canvas canvas) {
if (allowDraw) {
canvas.drawBitmap(textTool, 0, screenH - textTool.getHeight(), null);
command(canvas);
editText.setDrawingCacheEnabled(true);
// editText.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
// View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
editText.buildDrawingCache(true);
Bitmap b = editText.getDrawingCache();
canvas.drawBitmap(b, 100, 100, null);
// editText.draw(canvas);
mainActivity.getKeyboard();
}
}
}