système d'exploitation android de réseau sur le thread principal exception
- je faire de ce code unique de la demande de travail, mais si vous joindre à d'autres applications , afficher cette boîte de dialogue "système d'exploitation android de réseau sur le thread principal exception"
package com.kelompok2.bissmilahpulsa; import java.util.ArrayList; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.TextView; public class coba extends Activity { EditText nm,nmr; RadioGroup prov,nom,pem; TextView error; Button ok; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mulaitransaksi); nm=(EditText)findViewById(R.id.et_nama); nmr=(EditText)findViewById(R.id.et_nomor); prov=(RadioGroup)findViewById(R.id.provider); nom=(RadioGroup)findViewById(R.id.nominal); error=(TextView)findViewById(R.id.error); pem=(RadioGroup)findViewById(R.id.pembayaran); ok=(Button)findViewById(R.id.btn_ok); ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO Auto-generated method stub String type=null; String type1=null; String type2=null; switch (prov.getCheckedRadioButtonId()) { case R.id.rb_as: type="As"; break; case R.id.rb_axis: type="Axis"; break; case R.id.rb_im3: type="Im3"; break; case R.id.rb_telkomsel: type="Telokmsel"; break; case R.id.rb_xl: type="Xl"; break; } switch (nom.getCheckedRadioButtonId()) { case R.id.rb_5: type1="5"; break; case R.id.rb_10: type1="10"; break; case R.id.rb_20: type1="20"; break; case R.id.rb_50: type1="50"; break; } switch (pem.getCheckedRadioButtonId()) { case R.id.rb_cash: type2="Cash"; break; case R.id.rb_hutang: type2="Hutang"; break; } ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); postParameters.add(new BasicNameValuePair("nama", nm.getText().toString())); postParameters.add(new BasicNameValuePair("nomor", nmr.getText().toString())); postParameters.add(new BasicNameValuePair("provider", type)); postParameters.add(new BasicNameValuePair("nominal", type1)); postParameters.add(new BasicNameValuePair("jenis_pembayaran", type2)); String response = null; try { response = CustomHttpClient.executeHttpPost("http://appmob.pusku.com/save.php", postParameters); String res = response.toString(); res = res.trim(); res = res.replaceAll("\\s+",""); error.setText(res); if (res.equals("1")) error.setText("Data Tersimpan"); else error.setText("Data Tersimpan Ke server"); } catch (Exception e) { error.setText(e.toString()); } String nama1 = nm.getText().toString(); String nama2 = nmr.getText().toString(); String nama3 = type; String nama4 = type1; String nama5 = type2; String sms = nama1+"#"+nama2+"#"+nama3+"#"+nama4+"#"+nama5; Intent i = new Intent (Intent.ACTION_SENDTO,Uri.parse("sms:5556")); i.putExtra("sms_body", sms); startActivity(i); nm.setText(null); nmr.setText(null); } }); } }
en permission, je actif que <uses-permission android:name="android.permission.INTERNET"/>
et toujours pas de travail
double possible de android.os.NetworkOnMainThreadException
OriginalL'auteur Alit Perdana | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour exécuter les activités liées à internet sur un thread séparé de main (UI), le fil, vous pouvez le faire à l'emballage de votre code dans le bloc suivant:
OriginalL'auteur nstosic
Exécuter votre Réseau liées à l'opération dans AsyncTask
Vous pouvez également consulter ici Android AsyncTask
OriginalL'auteur Tulsiram Rathod
vous pouvez créer un AsynTask .. Votre code doit s'exécuter en arrière-plan afin d'être réactif.. sinon il affichera Pas de Réponse ..
Vous pouvez créer un sujet séparé pour elle .. à l'aide de multitâche.
Droit le code de la
onCreate
aprèssetContentView
OriginalL'auteur Xar E Ahmer
Alors que toutes les réponses postées dans ce fil de discussion est correct, asynctasks ne sont pas vraiment considérer comme un bon outil de l'utilisateur pour le réseau de transactions plus. Les principales raisons pour cela est que la asynctasks sont très étroitement liées aux activités de beaucoup de questions se posent comme..."ce qui se passe si l'activité est détruit avant l'appel du réseau des retours?".
Si vous voulez vraiment mettre en œuvre android meilleures pratiques (et de ne pas mentionner impressionner vos collègues Android les devs), alors pourquoi ne pas effectuer une tâche dans un service?
Je suggère de regarder sur le Chemin de logiciels libres projet android-prioriy-file d'attente. Ils le rendre incroyablement facile pour effectuer des tâches dans un service.
OriginalL'auteur Andre Perkins