Android setText() перезаписывается?
Я немного новичок в программировании на Android, и я хочу просто отправить текст на экран. Эта возможность должна быть при включении и выключении экрана. Когда вы включаете его, на экране отображается отметка времени его включения и 1. Кроме того, когда вы выключаете его, на экране печатаются отметка времени, когда он выключается, и 0. У меня есть небольшая проблема, просто "добавление" к предыдущей отметке времени, что означает, что я хочу непрерывно записывать, когда экран Android выключен и когда экран включен. Он продолжает перезаписывать себя. Вот моя попытка:
protected void onResume(){ //this is for when the screen is turned back on
Time now = new Time();
if(!ScreenReceiver.screenOn){
now.setToNow();
String lsNow = now.format("%m-%d-%Y %I:%M:%S");
LinearLayout lView = new LinearLayout(this);
myText = new TextView(this);
myText.setText(lsNow + ", 1");
lView.addView(myText);
setContentView(lView);
... //more code here
}
protected void onPause(){
Time now = new Time();
if(ScreenReceiver.screenOn){
now.setToNow();
String lsNow = now.format("%m-%d-%Y %I:%M:%S");
LinearLayout lView = new LinearLayout(this);
myText = new TextView(this);
myText.setText(lsNow + ", 0");
lView.addView(myText);
setContentView(lView);
...//more code here
}
Если кто-нибудь знает решение, это было бы здорово! Спасибо!
2 ответа
- Вы создаете новый макет, а затем настраиваете представление контента для этого макета, имеет смысл, что будет перезаписан не только TextView, но и все остальное, поскольку весь макет заменяется. Вместо этого продолжайте использовать один TextView с одним макетом.
- Есть
append()
метод в TextView для добавления.
Я также сделал бы общий метод:
public void logTime (boolean screen)
{
Time now = new Time();
now.setToNow();
String lsNow = now.format("%m-%d-%Y %I:%M:%S");
TextView myText = (TextView) findViewById (R.id.myText);
myText.append (" " + lsNow + (screen ? "0" : "1"));
}
Тогда позвони с ScreenReceiver.screenOn
в качестве параметра.
Ваш код в настоящее время сбрасывает весь макет действия при возобновлении и паузе. Когда вы звоните setContentView
вы по сути меняете старый макет на новый, созданный вами. Создайте один макет в папке ресурсов, а затем в деятельности onCreate
позвонить setContentView
метод. После этого используйте FindviewById<TextView>
чтобы получить ссылку на TextView
в вашем макете. Вам нужно будет передать идентификатор элемента, как вы объявили его в файле макета.
Чтобы добавить текст в элемент управления, вы должны использовать текущий текст, а затем добавить к нему новую информацию: textView.setText(textView.getText() + "new text")
так что старые данные не переопределяются.