在TextView.setText(字符串)上发生空指针异常

时间:2012-08-27 12:39:52

标签: android textview

我正在尝试更新一些TextViews。我有3个布局Main_Activity.XML默认为PortraitLandscape。这些布局中的TextView都具有相同的andoid:id

我已经阅读了更新TextView的所有内容,并且不知道为什么会崩溃整个应用。

我想也许TextView txt = (TextView) findViewById(R.id.txtViewActiveTimeProp1)返回null然后当我尝试setText时,我得到一个空指针异常。有什么想法吗?

TextView txt = (TextView) findViewById(R.id.txtViewActiveTimeProp1);
String strPref = retrievePrefs("pref_active_times_prop1");
txt.setText(strPref); 

Button onclick事件中,在setContentView完成后很长时间内发生相同的结果。验证了我用来引用我所有3个布局中TextView出口的ID。

public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    PreferenceManager.setDefaultValues(this, R.xml.preference, false);
    setContentView(R.layout.activity_main);

TextView txt = (TextView) findViewById(R.id.txtViewActiveTimeProp1);
String strPref = retrievePrefs("pref_active_times_prop1");
txt.setText(strPref);
}

2 个答案:

答案 0 :(得分:1)

您好,您必须在onCreate方法中执行findViewById。 因为你在事件监听器中执行findViewById,所以它返回null。

在您的代码中执行以下更改。

public class MainActivity extends Activity {
TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

PreferenceManager.setDefaultValues(this, R.xml.preference, false);
setContentView(R.layout.activity_main);

txt = (TextView) findViewById(R.id.txtViewActiveTimeProp1);
String strPref = retrievePrefs("pref_active_times_prop1");
txt.setText(strPref);
}

并在您的点击监听器中

String strPref = retrievePrefs("pref_active_times_prop1");
txt.setText(strPref);

希望这有帮助。

答案 1 :(得分:0)

似乎值String strPref = retrievePrefs(“pref_active_times_prop1”);  将为null,打印strPref值并检查