私はログインのアクティビティを作成しようとしていますが、値が正しいかどうかを確認して、ヌルではないことを確認しています...私のアプリがクラッシュするコードを次。事前に感謝してください。 私は感謝ログインボタンでアプリケーションがクラッシュするPHP接続とmysql接続をクリック
LoginActivity.java
package com.map.laurence.dbtest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class Login extends AppCompatActivity {
EditText user,pass;
Button login,register;
String loginUrl = "http://192.168.56.1/login.php";
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
register = (Button) findViewById(R.id.btnRegister);
login = (Button) findViewById(R.id.btnLogin);
user = (EditText) findViewById(R.id.user);
pass = (EditText) findViewById(R.id.pass);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(Login.this, "You clicked insert", Toast.LENGTH_LONG).show();
StringRequest request = new StringRequest(Request.Method.POST, loginUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("user", user.getText().toString());
return parameters;
}
};
requestQueue.add(request);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
loginUrl, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response.toString());
Toast.makeText(Login.this, "You clicked Login", Toast.LENGTH_LONG).show();
try {
JSONArray students = response.getJSONArray("user");
for (int i = 0; i < students.length(); i++) {
JSONObject student = students.getJSONObject(i);
String user = student.getString("username");
String password = student.getString("password");
String access = student.getString("access");
if (user != null) {
if (password == pass.toString()) {
Toast.makeText(Login.this, "not null", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(Login.this, "password incorrect", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(Login.this, "its null", Toast.LENGTH_LONG).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.append(error.getMessage());
}
});
requestQueue.add(jsonObjectRequest);
}
});
}
}
レイアウトファイルlogin.xml私と一緒にお待ちくださいアンドロイドスタジオプログラミングに新しいです
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.map.laurence.dbtest.Login">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="50sp"
android:id="@+id/user"
android:hint="Username"/>
<EditText
android:layout_width="match_parent"
android:layout_height="50sp"
android:id="@+id/pass"
android:hint="Password"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnLogin"
android:text="LOGIN"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnRegister"
android:text="REGISTER"/>
</LinearLayout>
</RelativeLayout>
login.php
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
include 'connection.php';
loginStudent();
}
function loginStudent()
{
$user = $_POST["user"];
$pass = $_POST["pass"];
global $connect;
$query = "select * from user where username='$user';";
$result = mysqli_query($connect,$query);
$number_of_rows = mysqli_num_rows($result);
$temp_array = array();
if($number_of_rows > 0){
while($row = mysqli_fetch_assoc($result)){
$temp_array[] = $row;
}
}
header('Content-Type: application/json');
echo json_encode(array("students"=>$temp_array));
mysqli_close($connect);
}
?>
これは私のLogCat
8月29日12の私のエラーです:16:39.731 3460から3460/com.map.laurence.dbtest E/AndroidRuntime:致命的な例外:メイン プロセス:COM :3470 java.lang.NullPointerException at com.map.laurence.dbtest.Login $ 1.onClick(Login.java:72) at android.view.View.performClick(View.java :4438)android.view.Viewの $ PerformClick.run(View.java:18422) android.os.Handler.handleCallback(Handler.java:733) (android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) でandroid .app.ActivityThread.main(ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(ネイティブメソッド)
あなたのLogcatを入れます。 –
はそれをエラーSir – LAW
で更新しました。あなたはあなたのrequestQueueパラメータを初期化するのを忘れたと思います。 –