2014-09-30 94 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文本視圖:文本=「名稱」