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();
}
}
}
tôi đã nhận một lỗi khi tôi nhấp thêm sinh viên trong androidKhông thể tạo xử lý bên trong chủ đề đó đã không được gọi Looper.prepare() 3
E/AndroidRuntime: Fatal EXCEPTION: AsyncTask # 1 Quy trình: com.example.lenovo.yuwilson, PID: 22199 java.lang.RuntimeException: Đã xảy ra lỗi khi thực hiện doInBackground() tại android.os.AsyncTask $ 3.done (AsyncTask.java:300) tại java. util.concurrent.FutureTask.finishCompletion (FutureTask.java:355) tại java.util.concurrent.Futur eTask.setException (FutureTask.java:222) tại java.util.concurrent.FutureTask.run (FutureTask.java:242) tại android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) tại java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) tại java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java WEBC87) tại java.lang.Thread.run (Thread.java:841) Gây ra bởi: java.lang.RuntimeException: Không thể tạo trình xử lý bên trong chuỗi chưa được gọi là Looper.prepare() tại android.os.Handler. (Handler.java:208) tại android.os.Handler. (Handler.java:122) tại android.widget.Toast $ TN. (Toast.java:341) tại android.w idget.Toast. (Toast.java:96) tại android.widget.Toast.makeText (Toast.java:245) tại com.example.lenovo.yuwilson.AddStudent.doInBackground (AddStudentActivity.java:94) at com .example.lenovo.yuwilson.AddStudent.doInBackground (AddStudentActivity.java:54) tại android.os.AsyncTask $ 2.call (AsyncTask.java:288) tại java.util.concurrent.FutureTask.run (FutureTask.java: 237) tại android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) tại java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) tại java.util.concurrent.ThreadPoolExecutor $ Worker .run (ThreadPoolExecutor.java WEBC87) tại java.lang.Thread.run (Thread.java:841)
Ai đó giúp tôi giải quyết?
trùng lặp có thể xảy ra của [Không thể tạo xử lý bên trong chủ đề mà không được gọi là Looper.prepare()] (http://stackoverflow.com/questions/3875184/cant-create-handler-inside-thread-that-has-not-called-looper-prepare) –
@Yu Wil Son Vui lòng xem xét chấp nhận một trong các câu trả lời dưới đây nếu nó đáp ứng yêu cầu của bạn – Lino