2012-09-24 88 views
1

我是android開發新手。我試圖將數據異步發佈到服務器。我有一個文本視圖message1,其數據發佈到Web服務。我的代碼如下android異步數據帖子

public class Main extends Activity { 

    ProgressDialog dialog; 
    final EditText message1 = (EditText) findViewById(R.id.editText1) ; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

      //generate GCM id ended 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
    } 

     private class Submitdata extends AsyncTask<String, Void, String> 
     { 

      @Override 
      protected String doInBackground(String... arg0) { 


       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://xyz.com/imran/msg.php"); 
       try { 
        // Add your data 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("message", message1.getText().toString())); 


        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        // Execute HTTP Post Request 
        //Toast.makeText(this, resId, duration) 
        HttpResponse response = httpclient.execute(httppost); 
//     Intent intent = new Intent(Register.this,Emergency.class); 
//     Register.this.startActivity(intent);   



       } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
       } 

       // TODO Auto-generated method stub 
       return null; 
      } 

      protected void onPreExecute() { 
       dialog = ProgressDialog.show(Main.this, null, "Loading", false); 



      } 
      @Override 
      protected void onPostExecute(String result) { 
      dialog.dismiss(); 
      } 

     } 

    //define function for doing in background like submit data 

     public void add_data() 
     { 
      Submitdata task = new Submitdata(); 
      task.execute(); 
     } 

每當我嘗試運行該應用程序,應用程序崩潰。我有谷歌的問題,許多職位說,這是由於onPostExecute()方法空指針異常。任何人都可以幫助我改變我的代碼來解決問題。 在此先感謝

我logcat的輸出:

09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.os.Looper.loop(Looper.java:137) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.ActivityThread.main(ActivityThread.java:4424) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at java.lang.reflect.Method.invokeNative(Native Method) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at java.lang.reflect.Method.invoke(Method.java:511) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at dalvik.system.NativeStart.main(Native Method) 
09-24 22:25:32.108: E/AndroidRuntime(18478): Caused by: java.lang.NullPointerException 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.Activity.findViewById(Activity.java:1794) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at com.mpidc2.management.Main.<init>(Main.java:34) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at java.lang.Class.newInstanceImpl(Native Method) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at java.lang.Class.newInstance(Class.java:1319) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
09-24 22:25:32.108: E/AndroidRuntime(18478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
09-24 22:25:32.108: E/AndroidRuntime(18478): ... 11 more 
+3

請發佈logcat輸出 – Simon

+0

沒有LogCat就沒有什麼可說的或完成的。 – Swayam

+0

Logcat數據更新在我的問題 – imran

回答

0

移動以下setContentView(R.layout.activity_main);

爲什麼它崩潰的原因線EditText message1 = (EditText) findViewById(R.id.editText1);是你想設置之前到您的EditText參考活動的觀點。

+0

感謝兄弟...它的工作.. – imran