Редактировать текст в onDraw ()

#android #android-edittext #ondraw

#Android #android-редактировать текст #ondraw

Вопрос:

Я знаю, как добавить EditText, но не в функции onDraw ().

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(new GaugeAnimation((this),10));

    EditText input = (EditText) findViewById(R.id.input);

    input.setText("hello");
}
  

Вышеуказанное не будет работать, также не работает и приведенное ниже:

 @Override
public void onDraw(Canvas c){


    EditText input = (EditText) findViewById(R.id.input);
    input.setText("hi");

}
  

итак, как я могу это сделать? в принципе, я хотел бы добавить редактируемое текстовое поле, но поскольку я не использую:

 setContentView(new R.layout.main);
  

это ошибка. Есть предложения?

я пытался:

 public class GaugeAnimation extends View{
         public GaugeAnimation(Context context, int value){
            EditText input = new EditText(context);
    input.setId(R.id.input);
 }
}
  

но это все еще не работает, что я делаю не так?

Ответ №1:

При создании вашего GaugeAnimation представления убедитесь, что оно вызывает setId(R.id.input) представление EditText, которое вы хотите использовать для ввода. Тогда ваш первый метод будет работать.

Вы должны знать, что вам не следует вносить обновления в элементы пользовательского интерфейса из onDraw метода view, как вы пытались.

Комментарии:

1. извините, я немного запутался, я попробовал это (читайте выше), и это все еще не работает

Ответ №2:

Я думаю, вам нужно преобразовать edittext в представление, чтобы иметь возможность его использовать. Без раздувания ваш edittext еще не создан.