ユーザーがログインしてログアウトできる場所にアプリケーションを作成しようとしています。
ログインすると、(データベースから)電子メールと名前を表示するアクティビティが表示されます。戻るボタンは私のアプリケーションがクラッシュします(残念ながら、Frienday'sは停止しました)。
最近、navbar backオプションが追加されました。ユーザーがナビゲーションバーに移動してページ(about、settingsなど)を選択すると、そのアクティビティに移動します。アクティビティ(LoginSuccess.java)にログインするために戻るボタンが押された場合、アプリケーションはクラッシュし、「残念ながらFriendayは実行を停止しました」と表示されます。
これをデバッグしようとしましたが、LoginSuccess.javaのNullPointerExceptionが発生しています。私はLoginSuccess.javaファイル内の項目を削除して、ユーザーの名前と電子メールを表示しようとしました。これらを削除すると、戻るボタンが正常に動作します。 (データベース用)
LoginSuccess.javaファイル
TextView name, email;
protected void onCreate(Bundle savedInstanceState) {
...
name = (TextView) findViewById(R.id.name);
email = (TextView) findViewById(R.id.name);
Bundle bundle = getIntent().getExtras();
name.setText(bundle.getString("name"));
email.setText("Email: " + bundle.getString("email"));
}
login.phpファイル
<?php
require "init.php";
$user_name = $_POST["user_name"];
$password = $_POST["password"];
$sql = "SELECT name,email FROM user_info WHERE user_name LIKE '".$user_name."' AND password LIKE '".$password."';";
$result = mysqli_query($con, $sql);
$response = array();
# Check if user already exists.
if (mysqli_num_rows($result) > 0)
{
$row = mysqli_fetch_row($result);
$name = $row[0];
$email = $row[1];
$code = "login_success";
array_push($response, array ("code" => $code, "name" => $name, "email" => $email));
echo json_encode($response);
}
else
{
$code = "login_failed";
$message = "User not found... Please try again!";
array_push($response, array("code" => $code, "message" => $message));
echo json_encode($response);
}
mysqli_close($con);
?>
Logcat
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.goril.friendays, PID: 32166
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.goril.friendays/com.goril.friendays.LoginSuccess}: 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:3254)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7237)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
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 com.goril.friendays.LoginSuccess.onCreate(LoginSuccess.java:25)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7237)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
は、私は数日間、これで苦労してきました。誰かが私を助けることができれば私はそれを喜んで感謝する:)。私はAndroidのウェブサイトのチュートリアルからバックオプションを実装しました。
チュートリアル: https://developer.android.com/training/implementing-navigation/ancestral.html
のようなものをキャッチすることができます。しかし、私はLoginSuccess.javaに示したものを削除すると、それが正常に動作します: –
oをそれはnullを返した場合、私はどうなるのか?ユーザーに電子メール/名前をどのように提示するのですか? –