gpt4 book ai didi

java - Activity 无意识启动时的 NULL 指针。空对象引用上的 'int java.lang.String.hashCode()'

转载 作者:行者123 更新时间:2023-12-02 04:26:54 26 4
gpt4 key购买 nike

关于我正在尝试做的事情的简要描述:

  1. 这是一个简单的消息应用程序

  2. 在我的第一个 Activity 中,我有一个 ListView 和几个按钮。

    • 用户按下任意按钮,有关按下哪个按钮的信息将存储在共享偏好设置中。
    • 当用户按下任何列表项时,会触发一个 Intent,将他带到新的 Activity,其中 putExtra() 从 Intent 中分析按下的列表项。
  3. 在第二个 Activity 中,根据 Intent 带来的值,确定 newString 的字符串值。

问题当屏幕旋转时,应用程序崩溃并出现此错误 -

Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference

以下是第二个 Activity 中的代码 -

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 指针异常,这不是我要问的。当屏幕旋转时,即当 Activity 无意中重新启动时,我得到 NULL 指针。

我是 Android 编程新手,无法弄清楚这里出了什么问题。

编辑:这不是与“什么是 NULL 指针异常”重复的问题。

最佳答案

我看到你用这个:

newString= (String) savedInstanceState.getSerializable("LIST_ITEM_CLICKED");

那么你会重写onSaveInstanceState吗?
如果没有,请覆盖它并保存当前的“LIST_ITEM_CLICKED”值

我认为你的问题是因为当旋转时, Activity 是用savedInstanceState重新创建的,但你没有保存你的值,所以会发生NPE。

关于java - Activity 无意识启动时的 NULL 指针。空对象引用上的 'int java.lang.String.hashCode()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32033757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com