来自类的TextView和setText

时间:2011-08-29 18:26:01

标签: android crash textview settext

我知道有关于此问题的几个问题,但我仍然没有得到它。 我有一项活动

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并且应用程序崩溃。我做错了什么,如何从主活动类的其他类中将setText设置为TextView?

1 个答案:

答案 0 :(得分:3)

您正在实例化一个活动子类,而您不应该这样做...... 此外,您正在尝试在上下文为null时查找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);


   }

}
编辑:刚刚注意到你想从另一个班级做到这一点。为此,只需提供要更改的文本视图和setText的引用