Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在画布上绘制编辑文本_Java_Android_Canvas_Bitmap - Fatal编程技术网

Java 无法在画布上绘制编辑文本

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对象。 确保在自定义视图的构造函

我正试图在位图上写入文本,我需要一个edittex来检查键盘的输入。 我在画布上找到draw EditText的代码,但返回null:

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();
        }
    }
}