Android-Prozedur: Senden von 8 verschiedenen Nachrichten: handler findet 8 Nachrichten, sondern nur die Letzte Nachricht

Ich bin neu auf Android und fand heraus, dass immer die Aktualisierung der Hauptansicht ich hatte zum erstellen eines thread zu behandeln verschiedene Prozess-und übergeben Sie dann wieder updates zu den wichtigsten anzeigen. Ich habe mich für die Handler-Klasse, um dies zu tun. Die Ansicht in diesem Beispiel wird eine Schaltfläche zum aktivieren der code und ein tablelayout zur Anzeige der empfangenen Nachrichten - Darstellung einer Stufe des Prozesses.

Das problem ist, dass ich senden 8 verschiedene Meldungen und ich kann sehen, 8-Nachrichten kommen zurück in der Prozedur, aber alle 8 haben den gleichen Inhalt wie die Meldung nur 8.

Erwartete ich den handler um die Nachrichten in der Reihenfolge.

Irgendwelche Vorschläge auf eine bessere Weise, dies zu tun, immer willkommen, um zu lernen.

Hier ist der code:

`

public class messageHandlerTest extends Activity {

protected TextView textView;
protected Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            String[] status = (String[]) msg.obj;
            createTableRow(status);
            Log.e("Got a new message",status[0]+":"+status[1]);
        }
    };

Button btnStartProgress;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.statusText);
    textView.setText("");
    //Getting response from server with Network SSID and Password

    Button connectButton = (Button)findViewById(R.id.connectButton);
    addListenerOnButton();
} //End of create

protected class connectWiFi extends Thread implements Runnable {
    //tokens1 = new String[0];
    public void run(){
    try {
        String[] messageString = new String[2];
        Message message = handler.obtainMessage();
        messageString[0]="OK";
        messageString[1]="Number 1";
        message.obj = messageString;
        handler.sendMessage(message);

        message = handler.obtainMessage();
        messageString[0]="OK";
        messageString[1]= "Number 2";
        message.obj = messageString;
        handler.sendMessage(message);
        message = handler.obtainMessage();
        messageString[0]="OK";
        messageString[1] = "Number 3";
        message.obj = messageString;
        handler.sendMessage(message);
        message = handler.obtainMessage();
        messageString[0]="OK";
        messageString[1] = "Number 4";
        message.obj = messageString;
        handler.sendMessage(message);

                    message = handler.obtainMessage();
                    messageString[0] = "OK";
                    messageString[1] = "Number 5";
                    message.obj = messageString;
                    handler.sendMessage(message);

                    message = handler.obtainMessage();
                    messageString[0] = "OK";
                    messageString[1] = "Number 6";
                    message.obj = messageString;
                    handler.sendMessage(message);

                    message = handler.obtainMessage();
                    messageString[0] = "OK";
                    messageString[1] = "Number 7";
                    message.obj = messageString;
                    handler.sendMessage(message);

                    message = handler.obtainMessage();
                    messageString[0] = "OK";
                    messageString[1] = "Number 8";
                    message.obj = messageString;
                    handler.sendMessage(message);

    } catch (Exception e) {
        e.printStackTrace();
        Log.e("Exception found","bugger");
    }
    }//End or run
}//End of class

public void addListenerOnButton() {

    btnStartProgress = (Button) findViewById(R.id.connectButton);
    btnStartProgress.setOnClickListener(
            new OnClickListener() {
                @Override
                public void onClick(View v) {
                connectWiFi connectwifi = new connectWiFi();
                connectwifi.start();
                }

            });

}
private void createTableRow(String[] stage) {
    TableLayout tl = (TableLayout) findViewById(R.id.statusTable);
    TableRow tr = new TableRow(this);
    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    tr.setLayoutParams(lp);
    tr.setBackgroundColor(0xFFFFFFFF);
    TextView tvStatus = new TextView(this);
    tvStatus.setLayoutParams(lp);
    tvStatus.setPadding(2,1,1,2);
    tvStatus.setTextColor(0xFF000000);
    tvStatus.setText(stage[0]); //Status
    TextView tvStage = new TextView(this);
    tvStage.setLayoutParams(lp);
    tvStage.setPadding(2,1,1,2);
    tvStage.setTextColor(0xFF000000);
    tvStage.setText(stage[1]); //Stage
    tr.addView(tvStatus);
    tr.addView(tvStage);
    tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
@Override
protected void onDestroy() {
    super.onDestroy();
}

}

Das Ergebnis dieses Codes sieht wie folgt aus:

Android-Prozedur: Senden von 8 verschiedenen Nachrichten: handler findet 8 Nachrichten, sondern nur die Letzte Nachricht

Tut Log.e("Got a new message",status[0]+":"+status[1]); geben Sie die richtige Werte?
Log.e liefert das gleiche Ergebnis, wie der Blick also alle 8!
Ich habe diesen code als ein Beispiel von hier: madskool.wordpress.com/2010/09/12/...
Das Beispiel, das ich verwendet wurde, war die 3. eins unten... alle Hilfe dankbar

InformationsquelleAutor ZipNFC | 2013-08-16

Schreibe einen Kommentar