Краткого описания о том, что я пытаюсь сделать:Указатель NULL, когда активность начинается без намерения. «INT java.lang.String.hashCode()» на нулевой ссылке на объект
Это простое приложение для обмена сообщений
В моей первой деятельности У меня есть список и несколько кнопок.
- Пользователь нажимает любую из кнопок, а информация о том, какая кнопка была нажата, хранилась в общих настройках.
- Когда пользователь нажимает на любой элемент списка, запускается намерение, которое приводит его к новому действию, в котором был нажат элемент списка, с помощью putExtra() из намерения.
Во второй деятельности, в зависимости от того, какое значение пришли с намерением, строковое значение для NewString решается.
Проблема Когда экран вращается, приложение падает с этой ошибкой -
попытка вызвать виртуальный метод 'INT java.lang.String.hashCode()' на null ссылка на объект
Ниже приведен код второй деятельности -
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 pointer, где я упомянул его в коде! Его строка между выражением Else и коммутатором.
Кроме того, я понимаю, что такое исключение NULL-указателя, и это не то, что я прошу. Я получаю NULL-указатель, когда экран вращается, т. Е. Когда активность перезапускается без намерения.
Я новичок в программировании на Android и не в состоянии понять, что здесь происходит.
Редактировать: Это не дублирующий вопрос: «Что такое исключение указателя NULL».
Спасибо! Я ценю, что вы публикуете ссылку.Но я уже посмотрел на него, и это не то, что я ищу. Я знаю, что такое исключение Null-указателя. Я пытаюсь выяснить, что вызывает его «после вращения экрана». – Nis