사용자가 로그인하고 로그 아웃 할 수있는 앱을 만들려고합니다.
로그인하면 데이터베이스의 이메일과 이름을 표시하는 활동이 표시됩니다.뒤로 버튼이 내 앱이 충돌합니다 (불행히도 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);
?>
로그 캣
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)
나는 몇 일 동안 고민하고있다. 누구든지 나를 도울 수 있다면 기꺼이 감사하겠습니다 :). 안드로이드 웹 사이트 튜토리얼에서 백 옵션을 구현했습니다.
자습서 : 난 당신이 이미 설명을 생각 https://developer.android.com/training/implementing-navigation/ancestral.html
같은 것을 잡을 수 있습니다하지만 LoginSuccess.java에 표시된 물건을 제거 할 때, 그것을 잘 작동합니다 : –
O를가 null을 반환하면 내가 어떻게 할 것인지? 사용자에게 이메일/이름을 어떻게 표시합니까? –