Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下登录按钮时强制关闭_Java_Android_Login - Fatal编程技术网

Java 按下登录按钮时强制关闭

Java 按下登录按钮时强制关闭,java,android,login,Java,Android,Login,我有一个项目,当我运行它时,我按下登录按钮,我的应用程序总是强制关闭,但如果我再次启动我的应用程序,登录状态为true。 错误信息是: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at com.farid.starsru

我有一个项目,当我运行它时,我按下登录按钮,我的应用程序总是强制关闭,但如果我再次启动我的应用程序,登录状态为true。 错误信息是:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
                  at com.farid.starsrunway.login.LoginActivity$Masuk.onPostExecute(LoginActivity.java:126)
                  at com.farid.starsrunway.login.LoginActivity$Masuk.onPostExecute(LoginActivity.java:81)
                  at android.os.AsyncTask.finish(AsyncTask.java:667)
                  at android.os.AsyncTask.-wrap1(AsyncTask.java)
                  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6157)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)
这是我的舱单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.farid.starsrunway">

<uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".login.LoginActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".login.RegisterActivity"
            android:label="Register New User">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".login.LoginActivity" />

            <intent-filter>
                <action android:name="android.intent.action.DETAIL" />

                <category android:name="android.intent.category.DETAIL" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainmenuActivity"
            android:label="Menu Utama">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".login.LoginActivity" />

            <intent-filter>
                <action android:name="android.intent.action.DETAIL" />

                <category android:name="android.intent.category.DETAIL" />
            </intent-filter>
        </activity>
    </application>
</manifest>
这是RequestHandler.java

package com.farid.starsrunway;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;

public class RequestHandler {
    //Metode Untuk mengirim httpPostRequest
    //Metode ini mengambil 2 Argumen
    //Metode Pertama adalah URL dari Skrip yang digunakan untuk mengirimkan permintaan
    //Yang lainnya adalah HashMap dengan nilai pasangan nama yang berisi data yang akan dikirim dengan permintaan
    public String sendPostRequest(String requestURL, HashMap<String, String> postDataParams) {
        //Membuat URL
        URL url;

        //Objek StringBuilder untuk menyimpan pesan diambil dari server
        StringBuilder sb = new StringBuilder();
        try {
            //Inisialisasi URL
            url = new URL(requestURL);

            //Membuat Koneksi HttpURLConnection
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            //Konfigurasi koneksi
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);

            //Membuat Keluaran Stream
            OutputStream os = conn.getOutputStream();

            //Menulis Parameter Untuk Permintaan
            //Kita menggunakan metode getPostDataString yang didefinisikan di bawah ini
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();
            int responseCode = conn.getResponseCode();

            if (responseCode == HttpsURLConnection.HTTP_OK) {

                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                sb = new StringBuilder();
                String response;
                //Reading server response
                while ((response = br.readLine()) != null){
                    sb.append(response);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    public String sendGetRequest(String requestURL){
        StringBuilder sb =new StringBuilder();
        try {
            URL url = new URL(requestURL);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String s;
            while((s=bufferedReader.readLine())!=null){
                sb.append(s).append("\n");
            }
        }catch(Exception ignored){
        }
        return sb.toString();
    }

    public String sendGetRequestParam(String requestURL, String id){
        StringBuilder sb =new StringBuilder();
        try {
            URL url = new URL(requestURL+id);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String s;
            while((s=bufferedReader.readLine())!=null){
                sb.append(s).append("\n");
            }
        }catch(Exception ignored){
        }
        return sb.toString();
    }

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for (Map.Entry<String, String> entry : params.entrySet()) {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }
        return result.toString();
    }
}
这是login.php

<?php
include "koneksi.php";

$user = $_GET["username"];
$pas  = $_GET["password"];
$pass = md5($pas); 

$query = "SELECT * FROM User WHERE Username='$user' AND Password='$pass' ";

$hasil = mysqli_query($con, $query);
if (mysqli_num_rows($hasil) > 0) {
    $response = array();
    $response["login"] = array();
    while ($data = mysqli_fetch_array($hasil)){
        $login['Id']       = $data['Id'];
        $login['Type']     = $data['Type'];
        $login['Username'] = $data['Username'];
        $login['Password'] = $data['Password'];

        array_push($response["login"], $login);
    }
    $response["success"] = benar;
    echo json_encode($response);
} else {
    $response["success"] = salah;
    $response["message"] = "Tidak ada data";
    echo json_encode($response);
}
?>

你能帮帮我吗。
我三天前试图解决这个问题,但我无法解决。

这是因为在您的
LoginActivity.java
第124行中,
if(success.equals(benar))
导致NullPointerException。根据我对你的代码的理解,如果你改变

success=null

success=“notbenar”//或者基本上是任何非空值


在第39行中,您的问题应该得到解决。

Jacob是正确的,success.equals()抛出异常,因为它为null

doInBackground中应该抛出相同的异常,但您有一个捕获:

        } catch (Exception e) {
            Log.e("error", "tidak bisa ambil data 1");
        }

实际上,您的日志应该指示success为null。

我相信您在赋值时忘记了双引号

而不是使用:
$response[“success”]=benar

试试这个:
$response[“success”]=“benar”

再修改一下这个,

$response["success"] = salah;
$response["success"] = "salah";

这与关闭力无关。您的代码引发异常(NPE),因为您试图在某个地方访问非实例化变量的实例成员。@Farid请接受此答案,如果一切正常,请关闭此问题。谢谢,我的项目可以无错误登录并强制关闭。感谢所有回答我问题的人。请按我答案旁边的勾号图标接受答案。当它变为绿色时,表示答案已被接受。
package com.farid.starsrunway;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;

public class RequestHandler {
    //Metode Untuk mengirim httpPostRequest
    //Metode ini mengambil 2 Argumen
    //Metode Pertama adalah URL dari Skrip yang digunakan untuk mengirimkan permintaan
    //Yang lainnya adalah HashMap dengan nilai pasangan nama yang berisi data yang akan dikirim dengan permintaan
    public String sendPostRequest(String requestURL, HashMap<String, String> postDataParams) {
        //Membuat URL
        URL url;

        //Objek StringBuilder untuk menyimpan pesan diambil dari server
        StringBuilder sb = new StringBuilder();
        try {
            //Inisialisasi URL
            url = new URL(requestURL);

            //Membuat Koneksi HttpURLConnection
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            //Konfigurasi koneksi
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);

            //Membuat Keluaran Stream
            OutputStream os = conn.getOutputStream();

            //Menulis Parameter Untuk Permintaan
            //Kita menggunakan metode getPostDataString yang didefinisikan di bawah ini
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();
            int responseCode = conn.getResponseCode();

            if (responseCode == HttpsURLConnection.HTTP_OK) {

                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                sb = new StringBuilder();
                String response;
                //Reading server response
                while ((response = br.readLine()) != null){
                    sb.append(response);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    public String sendGetRequest(String requestURL){
        StringBuilder sb =new StringBuilder();
        try {
            URL url = new URL(requestURL);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String s;
            while((s=bufferedReader.readLine())!=null){
                sb.append(s).append("\n");
            }
        }catch(Exception ignored){
        }
        return sb.toString();
    }

    public String sendGetRequestParam(String requestURL, String id){
        StringBuilder sb =new StringBuilder();
        try {
            URL url = new URL(requestURL+id);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String s;
            while((s=bufferedReader.readLine())!=null){
                sb.append(s).append("\n");
            }
        }catch(Exception ignored){
        }
        return sb.toString();
    }

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for (Map.Entry<String, String> entry : params.entrySet()) {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }
        return result.toString();
    }
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.farid.starsrunway"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
<?php
include "koneksi.php";

$user = $_GET["username"];
$pas  = $_GET["password"];
$pass = md5($pas); 

$query = "SELECT * FROM User WHERE Username='$user' AND Password='$pass' ";

$hasil = mysqli_query($con, $query);
if (mysqli_num_rows($hasil) > 0) {
    $response = array();
    $response["login"] = array();
    while ($data = mysqli_fetch_array($hasil)){
        $login['Id']       = $data['Id'];
        $login['Type']     = $data['Type'];
        $login['Username'] = $data['Username'];
        $login['Password'] = $data['Password'];

        array_push($response["login"], $login);
    }
    $response["success"] = benar;
    echo json_encode($response);
} else {
    $response["success"] = salah;
    $response["message"] = "Tidak ada data";
    echo json_encode($response);
}
?>
        } catch (Exception e) {
            Log.e("error", "tidak bisa ambil data 1");
        }
$response["success"] = salah;
$response["success"] = "salah";