Как динамически изменить Textview? - PullRequest
0 голосов
/ 19 августа 2011

У меня есть это простое действие, которое предполагает изменение текста TextView после нажатия кнопки.Вместо этого я неожиданно закрываю приложение.Вот мой код для этого изменения текстового представления:

package android.GUI;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.text.format.*;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CheckedTextView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import android.*;
import java.text.DateFormat;
import java.util.Date;

public class Shifts extends Activity implements OnClickListener{

Utility UT2 = new Utility();

int i = 2122;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shifts);

final TextView setDate = (TextView)this.findViewById(R.id.shifts);

Button setText = (Button)findViewById(R.id.setdate);
setText.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    setDate.setText(i);
}
})  ;

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

 }}

Ответы [ 5 ]

3 голосов
/ 19 августа 2011

Измените это:

setDate.setText(i);

на это:

setDate.setText("" + i);

Когда вы вызываете setText(int), int обрабатывается как идентификатор ресурса строки, который вынет, поэтому вам нужно позвонить setText(CharSequence), чтобы установить 2122 в вашем TextView

2 голосов
/ 19 августа 2011

Вы звоните TextView.setText(int), где int - это идентификатор ресурса, который вы, вероятно, не определили.

Вы, вероятно, хотите звонить TextView.setText(CharSequence), например:

setDate.setText(i + "");
1 голос
/ 19 августа 2011

Я предполагаю, что в вашем макете отсутствует TextView с идентификатором shifts .Посмотрите в выводе logcat ошибку: это исключение NullPointerException?

0 голосов
/ 19 августа 2011

Измените

setDate.setText(i);

на

setDate.setText(Integer.toString(i));

Если вы передадите целое число в setText, он будет использовать перегруженную функцию, которая принимает идентификатор ресурса в качестве параметра.Что вы хотите сделать, это передать строку.Я настоятельно рекомендую использовать Integer.toString () вместо грязных приемов, таких как i + "".

0 голосов
/ 19 августа 2011

В Android очень важно отметить, что многие функции имеют аргумент int по умолчанию вместо объектов, так как мы ссылаемся на объекты. поэтому вам придется добавить (i + "") в ваш метод setView (). И вы не можете изменить конечный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...