Android TextView settext()Nullpointer

时间:2014-09-30 19:27:29

标签: java android xml nullpointerexception textview

在我的Android应用中,我正在尝试显示个性化消息“欢迎,[名称]!”当应用程序启动时。通过错误日志,我确定在提示他/她后,我成功保存了用户名,并在后续启动时成功检索到该名称。但是当我尝试更改默认的“欢迎!”时“欢迎,[名字]!”使用settext,我得到一个空指针异常。

我的XML(activity_main.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFC2"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">

<TextView
    android:id="@+id/main_textview"
    android:text="Welcome!"
    android:textColor="#000000"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textSize="40sp"
    android:typeface="serif"/>

</RelativeLayout>

和我的Java

public class main extends Activity {

TextView mainTextView;
private static final String PREFS = "prefs";
private static final String PREF_NAME = "name";
SharedPreferences mainSharedPreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mainTextView = (TextView) findViewById(R.id.main_textview);
    String name = mainSharedPreferences.getString(PREF_NAME, "");
    if(name.length() > 0){mainTextView.setText("Welcome, " + name + "!" );}
    else{greeting();}

    }
}

基于其他类似的帖子,我已经尝试确保我在包含相关TextView的xml文件上使用setContentView,并且我已经尝试清理和重建项目。它仍然给我一个NullPointerException。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

NPE位于前一行。您尚未初始化mainSharedPreferences对象。

答案 1 :(得分:0)

字符串名称;

static String EXTRA_NAME;

EditName =(EditText)findViewById(R.id.name);

name = EditName.getText()。toString();

Intent.putExtra(&#34; EXTRA_NAME&#34;,名称);

你将在字符串名称中拥有EditName(用户输入的内容),如果你想将字符串名称发送到另一个类,你也可以将字符串名称放在静态字符串EXTRA NAME中......或者你可以创建一个单独的类可以作为对象使用getters和setter

或者您可能需要在xml文件中设置文本视图 机器人:文本=&#34;名称&#34;