Logininformationen Speichern

  • Hallo Leute,


    Ich habe eine Frage. Ich möchte, dass in meiner App Logininformationen gespeichert werden quasi. Wenn man sich einmal erfolgreich eingeloggt hat, soll eine Information gespeichert werden, die sagt: Hier wurde sich schon erfolgreich eingeloggt. Wie kann ich sowas realisieren?


    LG
    Niklas

  • Ehm ich habe ein Problem. Ich habe mir nun einen Code zusammengestellt, aber die App stürzt immer ab mit einem Nullpointerexception:




    public static AtomicBoolean ergebnis = new AtomicBoolean(false);
    public SharedPreferences pref = getApplicationContext().getSharedPreferences("IservApp", 0);
    public Editor editor = pref.edit();
    public Intent newActivity0 = new Intent(Login_main.this,MainActivity.class);

    protected void onCreate(Bundle savedInstanceState) {
    if(pref.contains("logged")){
    if(pref.getBoolean("logged", false)){
    startActivity(newActivity0);
    }
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_main);

    Button backbutton = (Button) findViewById(R.id.button1);
    backbutton.setOnClickListener(login);


    }

    View.OnClickListener login = new View.OnClickListener() {
    public void onClick(View v) {
    EditText user = (EditText) findViewById(R.id.editText1);
    String userstring = user.getText().toString();
    EditText pass = (EditText) findViewById(R.id.editText2);
    String passstring = pass.getText().toString();

    System.out.println("Verbindung wird aufgerufen mit " + userstring + " und " + passstring);

    ftp_login t = new ftp_login(userstring, passstring);
    t.start();
    try {
    t.join();
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    if(ergebnis.get()){
    editor.putBoolean("logged", true);
    startActivity(newActivity0);
    }
    }
    };
    }

  • 01-19 13:46:51.828: E/AndroidRuntime(1382): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.iserv.iserv_app/com.iserv.iserv_app.Login_main}: java.lang.NullPointerException
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.os.Looper.loop(Looper.java:137)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread.main(ActivityThread.java:4424)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at java.lang.reflect.Method.invokeNative(Native Method)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at java.lang.reflect.Method.invoke(Method.java:511)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at dalvik.system.NativeStart.main(Native Method)
    01-19 13:46:51.828: E/AndroidRuntime(1382): Caused by: java.lang.NullPointerException
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at com.iserv.iserv_app.Login_main.<init>(Login_main.java:17)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at java.lang.Class.newInstanceImpl(Native Method)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at java.lang.Class.newInstance(Class.java:1319)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    01-19 13:46:51.828: E/AndroidRuntime(1382): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
    01-19 13:46:51.828: E/AndroidRuntime(1382): ... 11 more
    01-19 13:46:52.157: I/dalvikvm(1382): threadid=3: reacting to signal 3
    01-19 13:46:52.167: I/dalvikvm(1382): Wrote stack traces to '/data/anr/traces.txt'
    01-19 13:46:52.417: I/dalvikvm(1382): threadid=3: reacting to signal 3
    01-19 13:46:52.427: I/dalvikvm(1382): Wrote stack traces to '/data/anr/traces.txt'
    01-19 13:46:56.667: I/Process(1382): Sending signal. PID: 1382 SIG: 9

  • Hi,


    Code
    public SharedPreferences pref = getApplicationContext().getSharedPreferences("IservApp", 0);


    wird vor dem Konstruktor deiner Klasse aufgerufen und getApplication ist einer Methode deiner Klasse (erhalten durch das erben von Activity). Du versuchst also eine Methode aufzurufen obwohl noch kein Objekt der Klasse erstellt wurde.



    mfg Titus

  • mmhh ich hab eben mal was ausprobiert und meine Erklärung scheint nicht wirklich richtig zu.


    die Lösung für dein Problem müsste eigentlich sein das du

    Code
    getApplicationContext().getSharedPreferences("IservApp", 0);


    in die onCreate verschiebst.


    das einzige was du ausprobieren müsstest wäre ob es vor dem Aufruf von super.onCreate(savedInstanceState); stehen kann oder danach.


    mfg Titus

  • Hallo Nikke1994,
    die Lösung von titus ist schon richtg.
    Wenn du unbedingt eine "globale Variable" pef haben muss, dann kannst du sie vor Erzeugen der Applikation

    Code
    protected void onCreate(Bundle savedInstanceState) 
    {   
      ...
    }


    der App bekannt machen, sie jedoch nicht erzeugen.

    Code
    public SharedPreferences pref;


    dann in

    Code
    protected void onCreate(Bundle savedInstanceState) 
    {   
      ...
      pref = getApplicationContext().getSharedPreferences("IservApp", 0); 
    }


    Dann gibt es auch keinen Fehler mehr.
    Schöne Grüße, schymura ^^

  • Hi,



    Und das geht nicht?


    mfg Titus

  • 01-20 13:17:22.547: E/AndroidRuntime(1955): FATAL EXCEPTION: main
    01-20 13:17:22.547: E/AndroidRuntime(1955): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.iserv.iserv_app/com.iserv.iserv_app.Login_main}: java.lang.NullPointerException
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.os.Looper.loop(Looper.java:137)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread.main(ActivityThread.java:4424)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at java.lang.reflect.Method.invokeNative(Native Method)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at java.lang.reflect.Method.invoke(Method.java:511)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at dalvik.system.NativeStart.main(Native Method)
    01-20 13:17:22.547: E/AndroidRuntime(1955): Caused by: java.lang.NullPointerException
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.content.ComponentName.<init>(ComponentName.java:75)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.content.Intent.<init>(Intent.java:3122)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at com.iserv.iserv_app.Login_main.<init>(Login_main.java:17)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at java.lang.Class.newInstanceImpl(Native Method)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at java.lang.Class.newInstance(Class.java:1319)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    01-20 13:17:22.547: E/AndroidRuntime(1955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)

  • Hallo Nikke1994,
    du wirst schon deine Gründe haben, warum du so viel "globale Variablen" verwendest.
    Aber warum willst du sie unbedingt fertig erzeugen, ehe denn die ganze Activity erzeigt wurde???
    was hätst du von

    Code
    public static AtomicBoolean ergebnis;
    public Intent newActivity0;


    vor dem onCreate(Bundle savedInstanceState)
    und erst in onCreate(Bundle savedInstanceState) das Erzeugen

    Code
    ergebnis = new AtomicBoolean(false);
    newActivity0 = new Intent(Login_main.this,MainActivity.class);


    Schöne Grüße, schmyura ^^

Jetzt mitmachen!

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