1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

HTTPClient Exception

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von jakves, 16.11.2011.

  1. jakves, 16.11.2011 #1
    jakves

    jakves Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2011
    Bekomme immmer die Exception android.os.NetworkOnMainThreadException. Was mache ich falsch?

    Code:
    Code:
    package com.ELQuiz;
    
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    
    public class EndActivity extends Activity
    {
    
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.end);
            
            Intent intent = getIntent();
            Bundle daten = intent.getExtras();
            
            int richtig = daten.getInt("Richtig");
            float zeit = daten.getFloat("Zeit");
            String user = daten.getString("User");
            
            float points = 1000 - ((10-richtig)*10) - (zeit/1000);
    
            
            
            TextView ergebnis = new TextView(this);
            ergebnis = (TextView) findViewById(R.id.ergebnis_textview);
            
            ergebnis.setText(user + " hat beim Elektronik-Quiz " + richtig + " von 10 Fragen in einer Zeit von " + (zeit/1000) + " Sekunden richtig beantwortet und damit " + points + " Punkte erreicht.");
            
            //MySQL
            
            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://www.example.com/el_quiz/on_db.php");
                httpclient.execute(httppost);
            }
    
            catch(Exception e)
            {
                ergebnis.setText(e.toString());
            }
            
            //MySQL Ende
            
            Button end = new Button(this);
            end = (Button) findViewById(R.id.Button_Restart);
            end.setOnClickListener(new View.OnClickListener() 
            {
                
                public void onClick(View v) 
                {                
                    Intent myIntent = new Intent(v.getContext(),ELQuizActivity.class);
                    startActivity(myIntent);    
                }
                
            });
            
            
            
        }
    }
    
    
    Danke schon mal!
     
  2. swordi, 16.11.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmmm

    die exception lautet NetworkOnMainThreadException.

    das würde ja mal schnell übersetzt bedeuten, dass du netzwerkoperationen im main thread ausführst.

    da wir ja alle wissen, dass das sehr böse enden kann, solltest du deine netwerkanfragen vom main thread entfernen und in einen separaten thread packen.

    denke damit kannst das problem lösen
     
    jakves bedankt sich.
  3. jakves, 16.11.2011 #3
    jakves

    jakves Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2011
    Danke für die Antwort! Klingt logisch. Nur wie geht das? :DD Sry, aber habe nicht soviel Erfahrung damit..

    danke!
     
  4. swordi, 16.11.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    schau dir tutorials zum thema AsyncTask an

    das wird dir helfen.

    und lies dich in das thema threads ein, das brauchst du ständig
     

Diese Seite empfehlen