2016-11-06 8 views
1

私はビットマップにテキストを書き込もうとしています。キーボードからの入力を確認するにはedittexが必要です。 私はキャンバスに描画のEditTextのためにこのコードを見つけたが、それがnullを返します。キャンバスにEditTextを描くことができません

Attempt to invoke virtual method 'void android.widget.EditText.setDrawingCacheEnabled(boolean)' on a null object reference 

編集:全クラス


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

私はそれをどのように行うことができますか?

+0

コンパイルしますか?またはエラーはランタイムエラーですか? – ItamarG3

+0

完全なソースコードを提供してください。 –

+0

@ItamarGreen私はそのクラスを呼び出すときに私のアプリクラッシュ – MREZA

答えて

0

システムがあなたの描画メソッドを呼び出した後に、あなたのeditTextオブジェクトを作成していると思います。 カスタムビューのコンストラクタ内でeditTextをインスタンス化するようにします。

関連する問題