No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () 3

public class AddStudentActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_student); } public void add2(View view){ //create 3 editText , 1 Textview EditText et_name, et_age; RadioButton rb_male; TextView tv_msg; //bind with xml widget et_name = (EditText)findViewById(R.id.et_name); et_age = (EditText)findViewById(R.id.et_age); rb_male = (RadioButton)findViewById(R.id.rb_male); tv_msg = (TextView)findViewById(R.id.tv_msg); //retrieve values String name = et_name.getText().toString(); String age = et_age.getText().toString(); String gender = ""; if (rb_male.isChecked()) gender = "male"; else gender = "female"; //call php new AddStudent(this, tv_msg).execute(name, age, gender); } } class AddStudent extends AsyncTask<String, Void, String> { private Context context; //CHANGE HERE....ADD PARAMATER TextView tv_msg; public AddStudent(Context context,TextView tv_msg) { this.context = context; this.tv_msg = tv_msg; } @Override protected String doInBackground(String[] arg) { //CHANGE HERE ...... RETRIEVE STRING ARGUMENTS String name = arg[0]; String age = arg[1]; String gender = arg[2]; String link; String data; BufferedReader bufferedReader; String result; try { //CHANGE HERE .... PARAMETERS data = "?name=" + URLEncoder.encode(name, "UTF-8"); data += "&age="+ URLEncoder.encode(age, "UTF-8"); data += "&gender="+ URLEncoder.encode(gender, "UTF-8"); //CHANGE HERE .... PHP PAGE link = "http://10.0.2.2/fashionstudio/ADD3.php" + data; URL url = new URL(link); HttpURLConnection con = (HttpURLConnection) url.openConnection(); bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); result = bufferedReader.readLine(); return result; } catch (Exception e) { Log.d("msg here", e.getMessage()); Toast.makeText(context, "Error Exception", Toast.LENGTH_SHORT).show(); return new String("Exception: " + e.getMessage()); } } @Override protected void onPostExecute(String result) { if (result != null) { try { JSONObject reader = new JSONObject(result); //CHANGE HERE... RETRIEVE VALUES String msg = reader.getString("msg"); tv_msg.setText(msg); } catch (Exception e) { e.printStackTrace(); Log.d("msg here", e.getMessage()); Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); } } } 

tengo un error cuando hago clic en añadir al estudiante en android

E / AndroidRuntime: FATAL EXCEPTION: AsyncTask # 1 Proceso: com.example.lenovo.yuwilson, PID: 22199 java.lang.RuntimeException: Se ha producido un error al ejecutar doInBackground () en android.os.AsyncTask $ 3.done (AsyncTask.java : 300) en java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355) en java.util.concurrent.FutureTask.setException (FutureTask.java:222) en java.util.concurrent.FutureTask.run (FutureTask. java: 242) en android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) en java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) en java.util.concurrent.ThreadPoolExecutor $ Worker. (ThreadPoolExecutor.java:587) en java.lang.Thread.run (Thread.java:841) Causado por: java.lang.RuntimeException: No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () en android .os.Handler (Handler.java:208) en android.os.Handler. (Handler.java:122) en android.widget.Toast $ TN. (Toast.java:341) en android.widget.Toast. Toast.java:96) en android.widget.Toast .makeText (Toast.java:245) en com.example.lenovo.yuwilson.AddStudent.doInBackground (AddStudentActivity.java:94) en com.example.lenovo.yuwilson.AddStudent.doInBackground (AddStudentActivity.java:54) en android. os.AsyncTask $ 2.call (AsyncTask.java:288) en java.util.concurrent.FutureTask.run (FutureTask.java:237) en android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) en java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) en java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) en java.lang.Thread.run (Thread.java:841)

Alguien me ayude a resolver por favor?

No puedes tener

 Toast.makeText(context, "Error Exception", Toast.LENGTH_SHORT).show(); 

dentro del método doInBackground . Toast.makeText(...) debe ejecutarse en un subproceso de interfaz de usuario.

prueba esto:

 runOnUiThread(new Runnable() { public void run() { Toast.makeText(context, "Error Exception", Toast.LENGTH_SHORT).show(); } }); 

Necesita llamar a Toast.makeText(...) desde el subproceso de la interfaz de usuario: porque el subproceso de la interfaz de usuario trata con la función relacionada con la interfaz de usuario no subproceso de trabajo

  • ¿Qué es el UiThread de Android (subproceso de interfaz de usuario)
  • No se muestra la vista de Android después del método addView
  • ¿Es una buena práctica crear AsyncTask anónima para paralelo pequeño proceso de congelación conocido?
  • ¿Por qué se utiliza un único modelo de subproceso para actualizar la interfaz de usuario como subproceso principal?
  • Android - llamando al hilo de ui del hilo de trabajo
  • ¿OnPreExecute () y onPostExecute () se ejecutan en el subproceso de interfaz de usuario o en el subproceso desde el que se inició AsyncTask?
  • Android - SQLite ContentResolver insertar / eliminar / actualizar en UI Thread?
  • ¿Qué sucede con un AsyncTask cuando la actividad de lanzamiento se detiene / destruye mientras todavía se está ejecutando?
  • ¿Es apropiado SQL o acceso general a archivos en el hilo principal de la interfaz de usuario de Android?
  • No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ()
  • Configuración de TextView visible desde otro hilo o BeginInvoke en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.