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

findViewById() Problem

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von ripperle, 27.03.2011.

  1. ripperle, 27.03.2011 #1
    ripperle

    ripperle Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    25.03.2011
    Hallo,

    leider findet besagte funktion kein objekt wenn ich Sie in einer anderen Klasse aufrufe.

    Habe das BluetoothChat Sample Programm für meine Anwendung genommen welches auch soweit funktioniert (Verbindung herstellen und Zeichen vom PC an das Handy senden). Nun möchte ich das empfangene in ein TextView schreiben, welches sich in einer ANDEREN klasse befindet!

    Code:
        private final Handler mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case MESSAGE_STATE_CHANGE:
                    if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
                    switch (msg.arg1) {
                    case BluetoothChatService.STATE_CONNECTED:
                        //mTitle.setText(R.string.title_connected_to);
                        //mTitle.append(mConnectedDeviceName);
                        //mConversationArrayAdapter.clear();
                        
                        //mConversationView.setText("");
                        break;
                    case BluetoothChatService.STATE_CONNECTING:
                        //mTitle.setText(R.string.title_connecting);
                        break;
                    case BluetoothChatService.STATE_LISTEN:
                    case BluetoothChatService.STATE_NONE:
                        //mTitle.setText(R.string.title_not_connected);
                        break;
                    }
                    break;
                case MESSAGE_WRITE:
                    byte[] writeBuf = (byte[]) msg.obj;
                    // construct a string from the buffer
                    String writeMessage = new String(writeBuf);
                    //mConversationArrayAdapter.add("Me:  " + writeMessage);
                    break;
                case MESSAGE_READ:
                    byte[] readBuf = (byte[]) msg.obj;
                    // construct a string from the valid bytes in the buffer
                    String readMessage = new String(readBuf, 0, msg.arg1);
                    //mConversationArrayAdapter.add(mConnectedDeviceName+":  " + readMessage);
                   [B] TextView textviewx = (TextView) findViewById(R.string.TextView_Output);
                    textviewx.setText("hugo");[/B]
                    break;
                case MESSAGE_DEVICE_NAME:
                    // save the connected device's name
                    mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
                    Toast.makeText(getApplicationContext(), "Connected to "
                                   + mConnectedDeviceName, Toast.LENGTH_SHORT).show();
                    break;
                case MESSAGE_TOAST:
                    Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST),
                                   Toast.LENGTH_SHORT).show();
                    break;
                }
            }
        };
    Hier ist die Funktion vom BluetoothChat programm. Ursprünglich wurde beim Empfang von Daten mit einem ArrayAdapter gearbeitet. Ich möchte aber lediglich den Empfangenen Text in ein TextView schreiben.
    Zum testen will ich "hugo" rein schreiben, aber dass geht nicht da findViewById(R.string.TextView_Output) NULL zurück gibt.
    Wenn ich diese Funktion in der Klasse aufrufe, in der das TextView Objekt liegt funktioniert alles...

    Es liegt warscheinlich an irgendwelchen public oder privat geschichten, aber das könnt Ihr mir bestimmt besser erklären :thumbsup:

    Gruß und danke für die Hilfe
    ripperle
     
  2. swordi, 27.03.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    findviewbyid funktioniert erst nach einem setcontentview

    nur eine vermutung. ist ja nur ein teil vom code
     
  3. ripperle, 27.03.2011 #3
    ripperle

    ripperle Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    25.03.2011
    aja ok wurde deshalb im beispielcode mit dem arrayadapter gearbeitet?!?

    welche möglichkeit habe ich denn wenn ich dieses TextView bearbeiten will, also bezüglich übergabe oder sowas?!?
     
  4. swordi, 28.03.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich wüsste nicht was der arrayadapter mit deinem textfeld zu tun hat.

    developer.android.com

    da werden sie geholfen :) viel lesen und grundlagen lernen ist bei dir im moment glaub ich gefragt.
     
  5. ripperle, 28.03.2011 #5
    ripperle

    ripperle Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    25.03.2011
    also hab nochmal bei der develepor Seite nachgelesen.... die findviewbyid methode muss in der gleichen klasse aufgerufen werden... will man Klassen übergreifend auf das Objekt zugreifen Soll man des mit dem handler machen...

    kann mir da jemand ein nettes tutorial. oder so nennen wie manmit diesem handler umgeht???

    danke ripperle
     
  6. v Ralle v, 28.03.2011 #6
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010

Diese Seite empfehlen