This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12个答案)
4年前关闭。
关于我要做什么的简短说明:
这是一个简单的消息传递应用程序
在我的第一个活动中,我有一个列表视图和几个按钮。
用户按下任意按钮,有关按下哪个按钮的信息存储在共享首选项中。
当用户按下任何列表项时,将触发一个意图,该意图将其带到新活动,在该活动中,putExtra()从意图中分析了按下了哪个列表项。
在第二个活动中,根据意图附带哪个值,确定newString的字符串值。
问题
屏幕旋转时,应用崩溃并显示此错误-
尝试在空对象引用上调用虚拟方法'int java.lang.String.hashCode()'
以下是第二个活动中的代码-
我在代码中提到的地方出现了NULL指针异常!它在Else语句和Switch之间的界限。
另外,我了解什么是NULL指针异常,这不是我要的。当屏幕旋转时,即活动无意重启时,我得到NULL指针。
我是android编程的新手,无法弄清楚这里出了什么问题。
编辑:这不是“什么是NULL指针异常”的重复问题。
那么,您是否覆盖
如果不是,请覆盖它并保存您的当前值
我认为您的问题是因为轮换时,活动是使用savedInstanceState重新创建的,但是您没有保存您的值,因此发生了NPE。
(12个答案)
4年前关闭。
关于我要做什么的简短说明:
这是一个简单的消息传递应用程序
在我的第一个活动中,我有一个列表视图和几个按钮。
用户按下任意按钮,有关按下哪个按钮的信息存储在共享首选项中。
当用户按下任何列表项时,将触发一个意图,该意图将其带到新活动,在该活动中,putExtra()从意图中分析了按下了哪个列表项。
在第二个活动中,根据意图附带哪个值,确定newString的字符串值。
问题
屏幕旋转时,应用崩溃并显示此错误-
尝试在空对象引用上调用虚拟方法'int java.lang.String.hashCode()'
以下是第二个活动中的代码-
String newString = "Default_Channel";
public static final String MyPREFERENCES = "MyPrefs" ;
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat2);
.
.
.
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String restoredText = sharedpreferences.getString("CurrentUser", null);
if (restoredText != null) {
currentUserName = sharedpreferences.getString("CurrentUser", "unknown");//"unknown" is the default value.
.
.
.
}
else
{
currentUser.setText("not signed in");
}
if (savedInstanceState == null)
{
Bundle extras = getIntent().getExtras();
if(extras == null)
{
newString= "Default_Channel";
}
else
{
newString= extras.getString("LIST_ITEM_CLICKED");
}
}
else
{
newString= (String) savedInstanceState.getSerializable("LIST_ITEM_CLICKED");
}
// *** GETTING ERROR HERE On this line *** //
switch (newString)
{
case "User_1":
.
.
.
break;
case "User_2":
.
.
.
break;
case "User_3":
.
.
.
break;
case "Default_Channel":
.
.
.
break;
}
我在代码中提到的地方出现了NULL指针异常!它在Else语句和Switch之间的界限。
另外,我了解什么是NULL指针异常,这不是我要的。当屏幕旋转时,即活动无意重启时,我得到NULL指针。
我是android编程的新手,无法弄清楚这里出了什么问题。
编辑:这不是“什么是NULL指针异常”的重复问题。
最佳答案
我看你用这个:
newString= (String) savedInstanceState.getSerializable("LIST_ITEM_CLICKED");
那么,您是否覆盖
onSaveInstanceState
?如果不是,请覆盖它并保存您的当前值
"LIST_ITEM_CLICKED"
。我认为您的问题是因为轮换时,活动是使用savedInstanceState重新创建的,但是您没有保存您的值,因此发生了NPE。