在我的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。任何帮助将不胜感激!
答案 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;