Как изменить текст TextView из пользовательского представления? - PullRequest
1 голос
/ 16 июля 2011

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

В моем XML есть два представления: одно простое базовое TextView:

<TextView  
android:id="@+id/tv"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello"
/>

, а другое - пользовательский класс, который я построил:

<com.package.testpanel.Panel 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

Код этой «Панели» довольно прост:

public class Panel extends View implements OnTouchListener, OnGestureListener {

TextView tv;

public Panel(Context context, AttributeSet attrs) {
    super(context, attrs);
    tv = (TextView) findViewById(R.id.tv);
    if (tv != null) {
        tv.setText("Text changed");
    }
}
}

(я, конечно, реализовал весь метод Listeners)

Как вы можете видеть в моем конструкторе, я просто пытаюсьизменить текст TextView из моей панели, и он не будет работать.Если я не поставлю условие «if (tv! = Null)», приложение просто вылетает при запуске.Я попытался поместить этот кусок кода в один из методов слушателя вместо конструктора, и результат тот же: ничего не происходит или происходит сбой без условия if.Если я добавлю точно такой же код в onCreate Деятельности, он отлично работает, но моя цель - изменить текст / свойства TextView на основе прослушивателя касаний и жестов на моей панели.

Я действительноновичок в этом Android SDK, я еще не пытался отладить приложение, но сейчас я просто хотел бы знать, почему этот простой код не работает.

Так что если у кого-то есть идея, почему яя не могу этого сделать или обойти, я был бы очень благодарен!

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Да. Мы должны сначала загрузить основной макет, прежде чем пытаться получить подвид. Это обычно со следующим утверждением:

setContentView(R.layout.your_layout);

Пожалуйста, обратитесь к http://developer.android.com/reference/android/app/Activity.html

Также я предлагаю вам сначала потратить некоторое время на основную концепцию, прежде чем пытаться создать сложное приложение. Это сэкономит вам много времени, чтобы задать эти вопросы.

0 голосов
/ 16 июля 2011

Добавить setContentView(R.layout.your_filename_with_textview); до tv = (TextView) findViewById(R.id.tv);

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