2014-09-30 92 views
0

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

我的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();} 

    } 
} 

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

+0

如果有任何问题的答案娄解决您的问题,请单击答案分数旁边的复选标记图标将其标记为答案。 – rcdmk 2014-09-30 19:52:58

回答

1

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

+0

打不过我需要按回车哈哈 – zgc7009 2014-09-30 19:30:46

+0

修好了!不能相信我太过分了。谢谢! – fpatt 2014-09-30 19:35:56

0

字符串名称;

static String EXTRA_NAME;

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

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

Intent.putExtra(“EXTRA_NAME”,name);

您将在字符串名称中具有EditName(用户输入内容),如果要将该字符串名称发送到另一个类别,也可以将该字符串名称放入一个静态字符串EXTRA NAME中,或者您可以创建一个单独的这可以作为对象..with getter和setter

或类也许你有设置在xml文件 的android文本视图:文本=“名称”