Обновление TextView после нажатия кнопки? - PullRequest
5 голосов
/ 14 апреля 2011

Я пытаюсь сделать базовый счетчик.

Идея состоит в том, что пользователь нажимает кнопку, и приложение отображает, сколько раз была нажата кнопка.

Моя проблема в том, что я не уверен, как обновить текстовое представление.Насколько я понимаю, его части XML извлекают строки, которые устанавливаются во время выполнения.Так как же мне «обновить» что-то «окончательное»?

Насколько я понимаю, когда я нажимаю кнопку, я увеличиваю num на 1. Затем он получает строку приглашения (клики:% d) и отображает ее на экране.Однако всякий раз, когда я запускаю это, он просто падает.

public class HelloAndroid extends Activity{
/** Called when the activity is first created. */

int num = 0;
TextView tView;
Button clickhere;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tView = (TextView) findViewById(R.id.textView1);
    clickhere = (Button) findViewById(R.id.button1);

    clickhere.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            num++;
            String display = String.format(getString(R.string.prompt), num);
            tView.setText(display);
            setContentView(tView);

        }
    });

} 
}

Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Вы устанавливаете TextView при нажатии (не при нажатии кнопки), я полагаю, это не то, что вы хотели сделать.Я обновил ваш код ниже, чтобы установить TextView при нажатии кнопки.

 public class HelloAndroid extends Activity{
/** Called when the activity is first created. */

int num = 0;
TextView tView;
Button clickhere;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tView = (TextView) findViewById(R.id.textView1);
    clickhere = (Button) findViewById(R.id.button1);

    clickhere.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            String display = String.format(getString(R.string.prompt, Integer.toString(++num)));
            tView.setText(display);
        }
    });

    //you don't need an event handler on the TextView (given the description of the problem)

} 
}
2 голосов
/ 14 апреля 2011
clickhere.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        num++;
        tView.setText(Integer.toString(num));
    }
});

это установит текстовое представление равным num

...