Absturz nach Funktionsaufruf aus Zweiter Klasse.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Absturz nach Funktionsaufruf aus Zweiter Klasse.

    Moin, ich bin kurz davor mein Laptop gegen die Wand zu werfen und irgendwelche Javererschaffer zu verprügeln ?(

    Eigentlich versuche ich nur diese Funktion

    Quellcode

    1. public void echoText(CharSequence xTxt) {
    2. Context context = getApplicationContext();
    3. int duration = Toast.LENGTH_SHORT;
    4. Toast toast = Toast.makeText(context, xTxt, duration);
    5. toast.show();
    6. }

    In einer Zweiten Klasse auszulagern und Aufzurufen.

    Wenn ich dies aber tue und versuche so aufzurufen:

    Quellcode

    1. myClass2 myC2 = new myClass2();
    2. myC2.echoText("test");
    Und die App so Starte und die Funktion Ausführe, seilt das Programm lautlos ab mit der Meldung : testApp angehalten.

    In der AndroidManifest.xml habe ich auch schon die Zeile <activity android:name=".myClass2" />
    Auch eingetragen, wie gesagt die App startet auch ohne Fehler, seilt dann aber ab, Kopiere ich die Funktion direkt in die MainActivity.java Funktioniert alles ohne Probleme.

    Ich hoffe jemand kann mir meinen Denkfehler oder den Quark den Java da macht näher bringen.

    Danke :)
  • Hallo bevor du noch straffällig wirst versuche ich es mal.

    Wenn du denn toast in einer anderen klasse ausgeben möchtest brauchst du den context der activity.
    Übergebe den am besten beim instanzieren.

    In der main
    1. MyClass2 myC2 = new MyClass2(this);
    2. myC2.echoText("test");

    Quellcode

    1. public class MyClass2 {
    2. Context context;
    3. MyClass2(Context cx){
    4. context=cx;
    5. }
    6. public void echoText(CharSequence xTxt) {
    7. int duration = Toast.LENGTH_SHORT;
    8. Toast toast = Toast.makeText(context, xTxt, duration);
    9. toast.show;
    10. //oder
    11. toast = Toast.makeText(getActivity(), xTxt, duration).show();
    12. //oder
    13. toast = Toast.makeText(MainActivity.this, xTxt, duration).show();
    14. }
    15. }
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Das ist nett von dir :)
    Ich habe das mal entsprechend abgeändert und joa.

    Also bei MainActivity.this bemängelt er bei mir: is not an enclosing class

    Bei getActivity() bemängelt er cannot resolve method.

    Bei MyClass2 myC2 = new MyClass2(this); bemängelt er MyClass2 (android.content.Context) in MyClass2 cannot be applied to (anonymous android.view.View.OnClickListner)
  • wo in welcher Methode instanzirst du deine klasse?
    Mache das am besten in der onCreate dort hast du mit tihs auch den richtigen Context.


    MainActivity.this ist als Beispiel auf deine activity zu verstehen ich weiss nicht wie du die genannt hast.


    public class MainActivity ......

    MyClass2 myC2 ;

    onCreate ....{
    myC2 = new MyClass2(this) ;


    Wenn du dich in einer callback Methode befindest und dort deine klasse instanzieren willst musst du getApplicationContext() als context übergeben.
    MyClass2 myC2 = new MyClass2(getApplicationContext() );

    Da deine Klasse nicht von deiner activity erbt hat sie auch keinen Content auf sie und kann ihn auch nicht selber erfragen.

    Kannst auch deiner Methode den context und den String übergeben.

    1. public void echoText(Context Content ,CharSequence xTxt) {
    2. int duration = Toast.LENGTH_SHORT;
    3. Toast toast = Toast.makeText(context, xTxt, duration);
    4. toast.Show;}
    myC2.echoText(getApplicationContext(), "test");
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von jogimuc ()