findViewById() Problem

  • 5 Antworten
  • Neuester Beitrag
Diskutiere findViewById() Problem im Android App Entwicklung im Bereich Betriebssysteme & Apps.
R

ripperle

Neues Mitglied
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
 
S

swordi

Lexikon
findviewbyid funktioniert erst nach einem setcontentview

nur eine vermutung. ist ja nur ein teil vom code
 
R

ripperle

Neues Mitglied
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?!?
 
S

swordi

Lexikon
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.
 
R

ripperle

Neues Mitglied
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
 
Ähnliche Themen - findViewById() Problem Antworten Datum
2
1