2014-09-30 2 views
0

В моем приложении для Android я пытаюсь отобразить персонализированное сообщение «Добро пожаловать, [имя]!» когда приложение запускается. Через журналы ошибок я решил, что я успешно сохраню имя пользователя после его запроса, чтобы его получить, и успешно получить это имя при последующих запусках. Но когда я пытаюсь изменить значение по умолчанию «Добро пожаловать!» на «Добро пожаловать, [имя]!» используя 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();} 

    } 
} 

на основе других аналогичных сообщений, я попытался убедившись, что я использую setContentView на файл XML который содержит соответствующий TextView, и я пробовал очистить и перестроить проект. Он по-прежнему дает мне исключение NullPointerException. Любая помощь будет принята с благодарностью!

+0

Если какие-либо из ответов сильфонный решает вашу проблему, отметьте его как ответ, щелкнув значок галочки рядом с ответом. – rcdmk

ответ

1

NPE находится на предыдущей линии. Вы не инициализировали свой объект mainSharedPreferences.

+0

Ударьте меня, сколько времени требуется, чтобы нажать enter haha ​​ – zgc7009

+0

Это исправлено! Не могу поверить, что я был таким. Благодаря! – fpatt

0

Название строки;

статическая строка EXTRA_NAME;

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

name = EditName.getText(). ToString();

Intent.putExtra ("EXTRA_NAME", имя);

у вас будет имя EditName (какие пользовательские ввода) в имени строки, и вы также можете поместить имя строки в статическую строку EXTRA NAME, если вы хотите отправить ее другому классу ... или вы можете создать отдельный класс, который может быть использован в качестве объекта ..са добытчиков и сеттеров

или, возможно, вы должны установить вид текста в XML-файл андроида: текст = «имя»

Смежные вопросы