Android: как создавать элементы динамического просмотра по нажатию кнопки - PullRequest
0 голосов
/ 07 августа 2011

Кажется, это простая проблема, но я борюсь с 2 дня.Я хочу создать textView динамически при нажатии кнопки.Вот пример кода

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_main);
Button bn = (Button) findViewById(R.id.button2);
bn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
       TextView tv1 = new TextView(getApplicationContext());
       tv1.setText("Show Up");
       layout.addView(tv1);
        }   
});
}

Я вижу кнопку, но при нажатии на кнопку не вижу текст View в моем макете.Любая проблема в коде?

Ответы [ 3 ]

1 голос
/ 07 августа 2011

Здравствуйте, прочитайте мой предыдущий пост , он содержит пример кода. (В пользовательском интерфейсе есть текст редактирования и кнопка, после нажатия кнопки появляется новое текстовое представление с введенным текстом) Я думаю, что это поможет вам.

Я обновил ответ рабочим кодом.

Код только в методе onCreate ():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dinamic_textview);
    final LinearLayout layout = (LinearLayout) findViewById(R.id.root_layout);
    final Button bn = (Button) findViewById(R.id.btnaddnewtext);
    bn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView tv1 = new TextView(v.getContext());
            tv1.setText("Show Up");
            layout.addView(tv1);
        }
    });
}

Макет xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/root_layout">
    <Button 
        android:id="@+id/btnaddnewtext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Add"  
    />
</LinearLayout>
1 голос
/ 07 августа 2011
Насколько я вижу, макет

не определен, попробуйте найти в макете findViewById, а затем установить для него дочерний элемент, тогда он должен работать

0 голосов
/ 13 августа 2014

Получите макет, в котором вы хотите, чтобы TextView отображался из вашего layout.xml.

Затем добавьте TextView в этот макет следующим образом: -

LinearLayout myLayout = (LinearLayout)findViewById(R.id.mLayout);
Button bn = (Button) findViewById(R.id.button2);
bn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
       TextView tv1 = new TextView(getApplicationContext());
       tv1.setText("Show Up");
       myLayout .addView(tv1);
        }   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...