Я использую фрагменты для получения пользовательских данных, а затем в своем последнем фрагменте я использую кнопку отправки, чтобы отправить данные на сервер, чтобы сохранить их, Проблема, с которой я столкнулся, - это когда я нажимаю кнопку «Отправить», приложение падает и говорит, что приложение, к сожалению, остановилось, я думаю, что его из-за android.os.networkOnMainThreadException
, потому что эта ошибка я получал ранее.Ошибка и приложение остановлено К сожалению, также StrictMode.ThreadPolicy() не работает
Мой код последнего фрагмента, где я, имеющий кнопку отправить это
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;
Теперь я использую AsyncTask, его код
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";
}
Поскольку вызова '' Toast.show' из doInBackground ' –
Возможные дубликат [NetworkOnMainThreadException] (http://stackoverflow.com/questions/5150637/networkonmainthreadexception) –
Пожалуйста, пост StackTrace, когда вы размещаете вопрос. –