Android 在按钮OnClick操作内执行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";

我有一个应用程序,它应该向php web服务发送一个电话号码并获得响应。 在我的代码中有一个按钮,它应该执行扩展AsyncTask类的另一个类

当我按下按钮时,应用程序崩溃

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())
into
StringEntity 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();