Android 在按钮OnClick操作内执行AsyncTask类
我有一个应用程序,它应该向php web服务发送一个电话号码并获得响应。 在我的代码中有一个按钮,它应该执行扩展AsyncTask类的另一个类 当我按下按钮时,应用程序崩溃Android 在按钮OnClick操作内执行AsyncTask类,android,android-asynctask,Android,Android Asynctask,我有一个应用程序,它应该向php web服务发送一个电话号码并获得响应。 在我的代码中有一个按钮,它应该执行扩展AsyncTask类的另一个类 当我按下按钮时,应用程序崩溃 public class JSONTransmitter extends AsyncTask<JSONObject, JSONObject, JSONObject> { String url = "http://192.168.1.6:89/Derdeery/banks.php";
public class JSONTransmitter extends AsyncTask<JSONObject, JSONObject, JSONObject>
{
String url = "http://192.168.1.6:89/Derdeery/banks.php";
protected JSONObject doInBackground(JSONObject... data) {
JSONObject json = data[0];
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 100000);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());
JSONObject jsonResponse = null;
HttpPost post = new HttpPost(url);
try {
StringEntity se = new StringEntity("json="+json.toString());
post.addHeader("content-type", "application/x-www-form-urlencoded");
post.setEntity(se);
HttpResponse response;
response = client.execute(post);
String resFromServer = org.apache.http.util.EntityUtils.toString(response.getEntity());
jsonResponse=new JSONObject(resFromServer);
Log.i("Response from server", jsonResponse.getString("msg"));
} catch (Exception e) { e.printStackTrace();}
return jsonResponse;
}
}
Logcat
12-30 09:02:57.734: W/dalvikvm(792): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
12-30 09:02:57.864: E/AndroidRuntime(792): FATAL EXCEPTION: main
12-30 09:02:57.864: E/AndroidRuntime(792): java.lang.NullPointerException
12-30 09:02:57.864: E/AndroidRuntime(792): at com.coffeecodes.coffecodesdoodle.MainActivity.mymethod(MainActivity.java:49)
12-30 09:02:57.864: E/AndroidRuntime(792): at com.coffeecodes.coffecodesdoodle.MainActivity$1.onClick(MainActivity.java:34)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.view.View.performClick(View.java:4202)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.view.View$PerformClick.run(View.java:17340)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.os.Handler.handleCallback(Handler.java:725)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.os.Handler.dispatchMessage(Handler.java:92)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.os.Looper.loop(Looper.java:137)
12-30 09:02:57.864: E/AndroidRuntime(792): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-30 09:02:57.864: E/AndroidRuntime(792): at java.lang.reflect.Method.invokeNative(Native Method)
12-30 09:02:57.864: E/AndroidRuntime(792): at java.lang.reflect.Method.invoke(Method.java:511)
12-30 09:02:57.864: E/AndroidRuntime(792): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-30 09:02:57.864: E/AndroidRuntime(792): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-30 09:02:57.864: E/AndroidRuntime(792): at dalvik.system.NativeStart.main(Native Method)
12-30 09:02:58.146: D/dalvikvm(792): GC_CONCURRENT freed 389K, 16% free 2833K/3340K, paused 74ms+26ms, total 390ms
12-30 09:05:35.477: I/Process(792): Sending signal. PID: 792 SIG: 9
请替换此行
StringEntity se=new StringEntity(“json=“+json.toString())
intoStringEntity se=newStringEntity(json.toString())代码>
我的问题是,在保存电话号码之前,请先将其验证到Web服务中,如果是,请发送JSONObject toSend=new JSONObject();toSend.put(“msg”,电话号码);
问题出现在MainActivity.java文件的第49行。
也许你应该删除这个祝酒词。
在这个toast上甚至不调用show()方法
Toast.makeText(getApplicationContext(), mymethod(),Toast.LENGTH_LONG );
应该是:
Toast.makeText(getApplicationContext(), mymethod(),Toast.LENGTH_LONG ).show();
plz post ur log cat.StringEntity se=新的StringEntity(json.toString());如果忘记为AsyncTask创建构造函数并在其上传递JsonObject,将导致应用程序崩溃。
Toast.makeText(getApplicationContext(), mymethod(),Toast.LENGTH_LONG );
Toast.makeText(getApplicationContext(), mymethod(),Toast.LENGTH_LONG ).show();