0

私はフラグメントを使用してユーザーデータを取得しています。最後のフラグメントでは、送信ボタンを使用してデータをサーバーに保存し、私が直面している問題は、Submitボタンをクリックするとアプリがクラッシュし、残念ながらアプリが停止していると言われています。これは私が前にこのエラーが発生していたためにandroid.os.networkOnMainThreadExceptionです。エラーとアプリケーションが停止しました残念ながら、StrictMode.ThreadPolicy()も機能しません

今私はasynctaskを使用しています、私は送信ボタンを持っています最後のフラグメントの私のコードは

View rootView = inflater.inflate(R.layout.fragment_dependent, container, false); 

    Button submit = (Button) rootView.findViewById(R.id.submit); 

    final EditText empid = (EditText) getActivity().findViewById(R.id.empidtext); 
    final EditText fname = (EditText) getActivity().findViewById(R.id.fnametext); 
    final EditText lname = (EditText) getActivity().findViewById(R.id.lnametext); 
    final EditText family = (EditText) getActivity().findViewById(R.id.familytext); 
    final EditText email = (EditText) getActivity().findViewById(R.id.emailtext); 
    final EditText religion = (EditText) getActivity().findViewById(R.id.religiontext); 
    final EditText nationality = (EditText) getActivity().findViewById(R.id.nationalitytext); 
    final EditText chronicdiseases = (EditText) getActivity().findViewById(R.id.chronicdiseasestext); 


    submit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Toast.makeText(getActivity(), empid.getText().toString()+" : "+fname.getText().toString(), 
        Toast.LENGTH_SHORT).show(); 
      eid = empid.getText().toString(); 
      name = fname.getText().toString(); 

      new Insert().execute(); 
     } 
    }); 

    return rootView; 

、そのコードは

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

    protected String doInBackground(Void... params) { 

     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

     nameValuePairs.add(new BasicNameValuePair("empid",eid)); 
     nameValuePairs.add(new BasicNameValuePair("fname",name)); 
     //nameValuePairs.add(new BasicNameValuePair("lname",lname.getText().toString())); 
     //nameValuePairs.add(new BasicNameValuePair("family",family.getText().toString())); 

     try 
     { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://192.168.0.103/insert.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      iss = entity.getContent(); 

      Toast.makeText(getActivity(), "Done", 
        Toast.LENGTH_LONG).show(); 
     } 
     catch(Exception e) 
     { 
      Toast.makeText(getActivity(), "Error "+e.toString(), 
        Toast.LENGTH_LONG).show(); 
     } 

     return "done"; 
    } 
+3

から 'Toast.show'を呼び出すので、' [NetworkOnMainThreadException]の ' –

+3

可能な複製をdoInBackground(http://stackoverflow.com/questions/5150637/networkonmainthreadexception) –

+0

あなたが質問を投稿したときにスタックトレースを投稿してください。 –

答えて

1

UIスレッドでトーストメッセージを表示したり、トーストを動かしですonPostExecute()メソッドへのメッセージ。

try 
    { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://192.168.0.103/insert.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     iss = entity.getContent(); 

     runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         Toast.makeText(getActivity(), "Done",Toast.LENGTH_LONG).show(); 
        } 
       }); 


    } 
    catch(Exception e) 
    { 
     Toast.makeText(getActivity(), "Error "+e.toString(), 
       Toast.LENGTH_LONG).show(); 
    } 
関連する問題