【发布时间】:2018-07-17 09:17:16
【问题描述】:
我无法准确找到我的问题所在或原因但是每次尝试在数据库中搜索数据时,我的应用程序似乎都会崩溃。为什么会这样?再想一想,我想我可能搞砸了 MySingleton.class,但我不确定是怎么回事。
更新 它现在没有崩溃,但仍然没有从我的数据库中加载数据..
更新 2 我的网址中出现此错误
Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in /storage/ssd1/078/5480078/public_html/denuncias/Connection.php on line 9
error
连接.php
<?php
$server_name = "localhost";
$user_name = "id5480078_denuncias";
$password = "smoothcriminal1";
$conn = mysqli_connect($server_name, $user_name, $password) or die ('Server '. mysql_error());
$database_name= 'id5480078_denuncias';
mysqli_select_db($database_name) or die('error');
mysqli_query("SET NAMES 'utf8'");
?>
UPDATE 3 Connection.php was fixed, but nnow the data isnt loading in the app.
错误日志:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: co.quindio.sena.navigationdrawerejemplo, PID: 25122
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ProgressDialog.show()' on a null object reference
at co.quindio.sena.navigationdrawerejemplo.Main2Activity.getSqlDetails(Main2Activity.java:58)
at co.quindio.sena.navigationdrawerejemplo.Main2Activity.access$000(Main2Activity.java:25)
at co.quindio.sena.navigationdrawerejemplo.Main2Activity$1.onClick(Main2Activity.java:48)
at android.view.View.performClick(View.java:5714)
at android.widget.TextView.performClick(TextView.java:10926)
at android.view.View$PerformClick.run(View.java:22589)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
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)
Main2Activity.class :
package co.quindio.sena.navigationdrawerejemplo;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
import com.android.volley.DefaultRetryPolicy;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import co.quindio.sena.navigationdrawerejemplo.R;
public class Main2Activity extends AppCompatActivity {
TextView result;
EditText phone;
Button search;
String number;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
search = (Button)findViewById(R.id.button);
result = (TextView)findViewById(R.id.textView2);
phone = (EditText)findViewById(R.id.phone);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getSqlDetails();
}
});
}
private void getSqlDetails() {
String url= "https://luisalonsoriveraibarra.000webhostapp.com/denuncias/read.php";
StringRequest stringRequest = new StringRequest(Request.Method.GET,
url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pd.hide();
try {
JSONArray jsonarray = new JSONArray(response);
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String id = jsonobject.getString("id");
String price = jsonobject.getString("price");
String name = jsonobject.getString("name");
String phone = jsonobject.getString("phone");
result.setText(" ID -"+id+"\n Price -"+price+"\n Name -"+name+"\n Phone -"+phone);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error != null){
Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show();
}
}
}
);
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
}
MySingleton.class:
package co.quindio.sena.navigationdrawerejemplo;
import android.content.Context;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
/**
* Created by Luis Alonso on 17/7/2018.
*/
public class MySingleton {
private static MySingleton instance = null;
private RequestQueue mRequestQueue;
//a private constructor so no instances can be made outside this class
private MySingleton(Context context) {
mRequestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
//Everytime you need an instance, call this
//synchronized to make the call thread-safe
public static synchronized MySingleton getInstance(Context applicationContext) {
if(instance == null)
instance = new MySingleton(applicationContext);
return instance;
}
//Initialize this or any other variables in probably the Application class
public void init(Context context) {}
public RequestQueue addToRequestQueue(StringRequest stringRequest) {
return mRequestQueue;
}
}
read.php:
include_once("Connection.php");
$query="SELECT * FROM data";
$result = mysqli_query($conn, $query);
while(($row = mysqli_fetch_assoc($result)) == true){
$data[]=$row;
}
echo json_encode($data);
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: java php android sql singleton