На моем экране меню пользователь должен войти в систему, используя свою учетную запись Google, чтобы использовать мое приложение.После успешного входа пользователь перейдет на экран профиля, где будут отображаться его имя, адрес электронной почты и изображение профиля Gmail.
В моем классе Profile внутри метода onCreate
у меня есть этот фрагментcode:
Intent dataFromMain = getIntent();
String fullName = dataFromMain.getExtras().getString("name");
String user_email = dataFromMain.getExtras().getString("email");
String profile_pic = dataFromMain.getExtras().getString("img_url");
Name.setText(fullName);
Username.setText(user_email);
Glide.with(this).load(profile_pic).into(Prof_Pic);
По сути, он получает данные из класса Menu (имя, адрес электронной почты и URL-адрес изображения профиля) и может использовать эти данные для установки имени пользователя на экране профиля,отобразить их электронную почту и показать фотографию профиля Gmail.Это все работает нормально, когда я в первый раз.
Однако у меня есть панель навигации в верхней части моего приложения.Допустим, пользователь переходит к экрану игры, а затем возвращается к экрану профиля.Приложение вылетает, и вот что я получаю:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.debata.com.debata, PID: 11783
java.lang.RuntimeException: Unable to start activity ComponentInfo{app.debata.com.debata/app.debata.com.debata.Profile}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
at app.debata.com.debata.Profile.onCreate(Profile.java:84)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Почему происходит сбой моего приложения, когда я пытаюсь вернуться на экран профилей?Я считаю, что там, где я использую методы getExtras()
и getString()
, возникают проблемы.
Редактировать: Включение метода в действие Меню, которое показывает, как отправляются данные.
private void handleResult(GoogleSignInResult result) {
if(result.isSuccess()) {
GoogleSignInAccount account = result.getSignInAccount();
String name = account.getDisplayName();
String email = account.getEmail();
String img_url = account.getPhotoUrl().toString();
Intent intent = new Intent(this, Profile.class);
intent.putExtra("name", name);
intent.putExtra("email", email);
intent.putExtra("img_url", img_url);
startActivityForResult(intent, 1);
}
}