TextView и setText из класса - PullRequest
       27

TextView и setText из класса

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

Я знаю, что есть пара вопросов по этому поводу, но я до сих пор не понимаю. У меня есть активность

package test.example.om;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import test.example.om.Texter;

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

    public String text="Helloo";
    @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       Texter myTexter = new Texter(); 
       myTexter.textTexter();


   }
    public void textSet(){
        TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
           tv.setText(text);
}
}

и класс Texter

package test.example.om;

import android.widget.TextView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Texter extends Activity{
String string="Helloo";


public void textTexter(){
    TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
       tv.setText(string);
}
}

LogCat показывает исключение NullPointerException, и приложение вылетает. Что я делаю не так, и как я могу установить TextText для TextView из другого класса, чем основной класс деятельности?

1 Ответ

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

Вы создаете экземпляр подкласса активности и не должны этого делать ... Кроме того, вы пытаетесь найтиViewById (в классе Texter), когда ваш контекст нулевой, поскольку вы не прошли правильный жизненный цикл Activity.

Чтобы изменить текст представления текста, просто переместите метод textTexter из Texter в TextActivity и вызовите его. Удалите активность Texter, поскольку она не используется.

package test.example.om;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import test.example.om.Texter;

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

    public String text="Helloo";
    @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
       tv.setText(text);


   }

}

РЕДАКТИРОВАТЬ: Просто заметил, что вы хотите сделать это из другого класса. Для этого просто дайте ссылку на текстовое представление, которое вы хотите изменить, и установите для него текст

...