[GELÖST]Toast im Thread APP Crashed

T

tau31535

Neues Mitglied
0
Hallo zusammen,

ich muss nochmal was fragen.

in meiner main class

PHP:
public class BTCar2 extends Activity implements OnClickListener
steht unter anderem dies drinne
PHP:
public void EngineStart() {
up = "Start";
BTTH = true;
Log.e(TAG, up);

//Neue Klasse DemoThread!!
DemoThread demoThread;
demoThread = new DemoThread();
demoThread.start();
}
dann gibt es im Ordner src/com/ zwei Datein BTCar2.java & DemoThread.java


und in dem DemoThread steht folgendes

PHP:
import android.app.Activity;
import android.util.Log;
import android.widget.Toast;


public class DemoThread extends Thread {
    
    public void run() {Smileys[IMG]http://1.2.3.12/bmi/www.android-hilfe.de/images/smilies/extra/sleep.gif[/IMG][IMG]http://1.2.3.13/bmi/www.android-hilfe.de/images/smilies/extra/flapper.gif[/IMG][IMG]http://1.2.3.13/bmi/www.android-hilfe.de/images/smilies/extra/mad.gif[/IMG][IMG]http://1.2.3.9/bmi/www.android-hilfe.de/images/smilies/extra/scared.gif[/IMG]
        
        while(BTCar2.BTTH)
            
 {
            Log.e(BTCar2.TAG,"LOL");
            
            DemoThread2.lol();
            
        try {
          sleep(500);
        }
        catch(InterruptedException e) {
        }
        
     
    }
}

public static class DemoThread2 extends Activity  {

    public static void lol() {
        Toast.makeText(BTCar2.BTCar.getApplicationContext(),"Connection missing, reconnect",Toast.LENGTH_SHORT).show();
        
    }}}
wird nun versucht der Toast auszuführen crashed die APP obwohl Eclipse mir keinen Fehler anzeigt. Kann mir bitte jemand helfen?

Danke
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
  • Danke
Reaktionen: samarek und tau31535
Danke dir,

da ich nicht viel Ahnung von Java habe, habe ich einfach ein wenig rumprobiert.:razz:

Habe ich denn eigentlich irgendwie nun ne möglichkeit im Thread nen Toast zu erzeugen oder muss ich das immer an die Hauptactivity zurückübergeben.

Wenn es geht in meinem Thread nen Toast zu erzeugen, kannst du mir vll. nen bsp. code liefern, da ich nen Linkinhalt nicht verstehe :(

Die ganzen Syntaxen sind für mich immer noch sehr abstrakt so das ich die ganzen Zusammenhänge mit .start() etc. nicht richtig verstehe!

Sry.

Also hoffe ich auf nen beispiel^^.

Danke schonmal für die INFO!!
 
naja ohne grundlagen ist es immer schwer.

versuch dich zuerst an einfacheren apps ohne threading vielleicht. das thema ist aber ein sehr wichtiges und für ernstzunehmende apps sehr wichtig.
 
Der Thread ist aber erforderlich da ich dauerhaft beim Drücken eines Button's in einer Schleife den Befehl Start über BT verschicke. Mache ich das ohne Thread wird das loslassen nicht mehr erkannt.
Sinn für den Handler ist mir einen Toast zu liefern wenn ein Fehler beim Senden auftritt (Exception)

@swordi

vll. kannst du mir nen bsp. für nen Handler geben. habe verschiede beispiele gesehen mit Handler auf andnevv oder so. Konnte aber es nicht implementieren.

sry.
 
hmm wo liegt das problem bei der implementation? welche fehler gibts?

handler anlegen. handler aufrufen. fertig.
 
für dich einfach für mich unverständlich :)

ich versuch es mal

PHP:
Handler messageHandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {  
            switch(msg.what) {
            case 5:
                Toast.makeText(BTCar2.this,"Handle mich haha",Toast.LENGTH_SHORT).show();
            }
        }

    };

ich hoffe nun das es so passt.

Jetzt weiss ich nur nicht, wie ich von einer anderen Klasse der einen Thread enthält eine Nachricht zu meinem Handler schicke. Wenn ich in er gleichen Klasse bin ohne Thread funktioniert es mit
PHP:
sendMessage
. Aber als Sender von einer anderen Classe in einem Thread ???

ich bin Radlos
 
Einfach messageHandler.sendEmptyMessage(5)

Der thread muss halt den Händler kennen
 
Also wenn du es dir einfach machen willst, dann hast du meiner Meinung nach 2 Möglichkeiten.

- Du übergibst deinem Thread im Konstruktor den Context der aufrufenden Activity. Dann mußt du keine "Pseudo-Activity-Klasse" definieren, um den Tost zu erzeugen. Und dann einfach mit runOnUIThread() deinen Toast anzeigen.
- oder du definierst in deiner aufrufenden Activity eine Methode zum Anzeigen des Toast (showToast() oder so) und übergibst deinem Thread im Konstruktor die Referenz auf deine Activity. Dann kannst du die Methode von deinem Thread aus aufrufen. Die Anzeige vom Toast könnte hier evtl. ohne runOnUIThread funktionieren, bin mir aber nicht sicher.

In beiden Fällen mußt du dich jedenfalls nicht mit dem Handler rumplagen, ist vielleicht einfacher und verständlicher für dich ;-)
 
Danke an alle.

Ich habe in der onCreate

PHP:
mHandler = new Handler(){
    public void handleMessage(Message msg) {

ergänzt und im der anderen classe aus einem Thread

PHP:
Meine activity Classe.mHandler.sendEmptyMessage(3);
                        BTCar2.mHandler.sendEmptyMessage(5);

Danke an alle
 

Ähnliche Themen

Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
R
  • Robby1950
2
Antworten
23
Aufrufe
1.022
Robby1950
R
netfreak
  • netfreak
Antworten
10
Aufrufe
461
netfreak
netfreak
Zurück
Oben Unten