TextView in externer Klasse auslesen

  • Hallo

    Ich bin seit Stunden daran herauszufinden, wie man in einer externen Klasse auf den Inhalt von TextView's zugreifen kann.

    in der externen Klasse hab ich drin:

    Java
    public class Test extends MainActivity {
    
    
        public void starteTest() {
            setContentView(R.layout.activity_main);
            pw_template = (TextView) findViewById(R.id.pw_template);
            pw_template.setText("Neuer Text");
        }
    }


    Die Klasse rufe ich in der MainActivity aus der Methode onCreate auf:

    Code
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            test = new Test();
            test.starteTest();
    }


    Die fehlermeldung ist immer folgende:

    Was habe ich denn übersehen?

  • Dann ist es kein Wunder. Du erzeugts mit new ein neues Objekt . Der Operator new ruft den konstrucktor der Klasse auf. Der nicht da ist . Somit wird ein nullpointer zurückgegeben. Erstelle einen.
    So.

    public void Test() {
    }

  • Bei fehlenden Konstrukte wird vom Compiler eigentlich automatisch ein leerkonstruktor erzeugt.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

    • die Klasse erbt auch von sich selbst mainactivity. Also eine Art rekurson. Dann lasse mal zum Test die Vererbung von mainactivity weg . Und schaue ob du die nullpointer exception bekommst.
  • Nehme ich das extends MainActivity raus, findet er setContentView nicht mehr (cannot resolve method setContentView).
    Auch mit extends Activity crasht die App
    "Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.Window.setContentView(int)' on a null object reference"

  • Ich lade doch kein neues Layout, sondern das bestehende!
    Man wird doch wohl irgendwie aus einer anderen Klasse als MainActivity auf eine TextView zugreifen können?

  • Du brauchst dein Layout nicht neu laden. Verstehe nicht ganz dein vorhaben. du wilst von Klasse mainActivity auf eine Methode der Test Klasse zugreifen die dann auf wieder auf ein TextView der mainActivity zugreift. richtig?
    dafür must du das Layaut nicht neu laden und auch keine Vererbung von dir selber machen.
    Du hast zwar die Funkzionalität der Klasse mainActivity geerbt, aber damit bist du nicht in deiner Activity, du erzeugst ja ein neues Objekt. Dafür must du den Context der main Klasse übergeben und mit ihm arbeiten.
    Dann kanst du auf die Objekte deine main zugreifen. oder auch neue suchen so wie in startText2().
    das erben von mainActivity ist nicht notwendig.


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!