С точки зрения того, как каждая кнопка относится к действиям? В чем различия?
У меня есть 3 вида деятельности (назовем их A, B и C). A является родителем B, а B является родителем C, и одно намерение дополняет следующее действие. Я перехожу с A на B, а затем с B на C. Когда я пытаюсь вернуться с помощью кнопки «Вверх», приложение вылетает, и это потому, что оно пытается получить информацию от дополнительного в намерении.
Но когда я использую кнопку "Назад", она работает (???), и я не знаю почему.
Я попытался заставить кнопку «Вверх» работать как кнопка «Назад», выполнив следующие действия:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.home:
onBackPressed();
break;
}
return super.onOptionsItemSelected(item);
}
, а также попытался использовать NavUtils.navigateUpFromSameTask(this)
, но он тоже не работает. Как я могу решить это?
Редактировать: журнал ошибок
2019-01-09 03:45:43.468 29326-29326/com.jvponte.maosdadasv1 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.jvponte.maosdadasv1, PID: 29326
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jvponte.maosdadasv1/com.jvponte.maosdadasv1.UserActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.jvponte.maosdadasv1.User.getUsername()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:169)
at android.app.ActivityThread.main(ActivityThread.java:6568)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.jvponte.maosdadasv1.User.getUsername()' on a null object reference
at com.jvponte.maosdadasv1.UserActivity.onCreate(UserActivity.java:67)
at android.app.Activity.performCreate(Activity.java:7016)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:169)
at android.app.ActivityThread.main(ActivityThread.java:6568)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Редактировать: еще немного кода
У меня это в onCreate()
на моей деятельности B (UserActivity
). Дополнительное намерение добавляется к заданию A
Intent intent = getIntent();
if(intent.hasExtra("clickedUser")){
mOtherUser = intent.getParcelableExtra("clickedUser");
}
if(intent.hasExtra("loggedUser")){
mLoggedUser = intent.getParcelableExtra("loggedUser");
}
/.../
mUsernameTV.setText(mOtherUser.getUsername());
mUserInfoTV.setText(mOtherUser.getUserInfo());
Здесь я называю деятельность C (ChatActivity
)
Intent intent = new Intent(UserActivity.this, ChatActivity.class);
intent.putExtra("loggedUser", mLoggedUser);
intent.putExtra("clickedUser", mOtherUser);
startActivityForResult(intent, RC_CHAT);
В ChatActivity
onCreate()
У меня есть
Intent intent = getIntent();
if (intent.hasExtra("clickedUser")){
otherUser = intent.getParcelableExtra("clickedUser");
otherUserId = otherUser.getUid();
otherUserName = otherUser.getUsername();
}
if (intent.hasExtra("loggedUser")){
loggedUser = intent.getParcelableExtra("loggedUser");
loggedUserId = loggedUser.getUid();
}
Ошибка, вероятно, заключается в том, что данный loggedUser и другие дополнительные пользователи неправильно управляются. Самое странное, что использование кнопки «Назад» РАБОТАЕТ, а настройка кнопки «Работа» для кнопки «Назад» не работает