2014-07-22 38 views
0

海傢伙問候所有... 新的Android字段..我創建新的Android應用程序使用登錄和註冊屏幕...我的問題是我想如果我的應用程序已登錄用戶已經goto菜單activty其他去登錄頁面在android ..請幫助我通過提供示例編碼或想法..感謝提前..如果應用程序已登錄已goto主要activty其他去登錄頁面android

這是我正在使用的代碼。對於我的QS,但其沒有工作..

package com.example.android_todist; 
import java.util.logging.Handler; 
    import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 
    import android.os.Handler; 
    import android.app.Activity; 
import android.app.Dialog; 
    import android.content.Context; 
    import android.content.Intent; 
import android.content.SharedPreferences; 
    import android.content.SharedPreferences.Editor; 
import android.os.Bundle; 
    import android.preference.PreferenceManager; 
    import android.support.v7.app.ActionBarActivity; 
    import android.view.KeyEvent; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.ImageButton; 
    import android.widget.TextView; 
    import android.widget.Toast; 

public class SplashActivity extends Activity { 
Intent intent; 
String userName,password; 
    SharedPreferences pref; 
    Editor editor; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_screen); 
    pref = PreferenceManager.getDefaultSharedPreferences(this); 
    String storedUsername = pref.getString(userName, ""); 
String storedPassword = pref.getString(password, ""); //return nothing if no pass  saved 
if (!storedUsername .equalsIgnoreCase("") || !storedPassword .equalsIgnoreCase("")) { 
Intent intent = new Intent(this, Todist1.class); 
    startActivity(intent); 
    finish(); 

}else { 
    Intent intent = new Intent(this, Login.class); 
    startActivity(intent); 
    } 

new Handler().postDelayed(new Runnable() { 
    @Override 
     public void run() { 

      startActivity(intent); 
      finish(); 
     } 
    }, 3000); 

} 

}

會重定向到主頁。但如果新用戶打開我的應用程序也將重定向到主頁着能夠獲得登錄頁面..

這是我的錯誤日誌..:

07-24 04:21:36.135: E/AndroidRuntime(1080): FATAL EXCEPTION: main 
    07-24 04:21:36.135: E/AndroidRuntime(1080): java.lang.NullPointerException 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.Instrumentation.execStartActivity(Instrumentation.java:1410) 

    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.Activity.startActivityForResult(Activity.java:3370) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.Activity.startActivityForResult(Activity.java:3331) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.Activity.startActivity(Activity.java:3566) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.Activity.startActivity(Activity.java:3534) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
     com.example.android_todist.SplashActivity$1.run(SplashActivity.java:50) 

    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.os.Handler.handleCallback(Handler.java:725) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.os.Handler.dispatchMessage(Handler.java:92) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.os.Looper.loop(Looper.java:137) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    android.app.ActivityThread.main(ActivityThread.java:5041) 
    07-24 04:21:36.135: E/AndroidRuntime(1080): at 
    java.lang.reflect.Method.invokeNative(Native Method) 
07-24 04:21:36.135: E/AndroidRuntime(1080): at 

java.lang.reflect.Method.invoke(Method.java:511) 
07-24 04:21:36.135: E/AndroidRuntime(1080):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-24 04:21:36.135: E/AndroidRuntime(1080):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-24 04:21:36.135: E/AndroidRuntime(1080):  at 
dalvik.system.NativeStart.main(Native Method) 
+0

入住這http://stackoverflow.com/questions/18843625/how-do-i-use-shared-pref-file-for-my-apps-log-in-page/18843908#18843908 – ryderz8

+0

請查看我的編碼... – Android

+0

刪除'import java.util.logging.Handler;' – ryderz8

回答

1

創建一個SplashActivity類,在這裏你檢查爲憑證。

public class SplashActivity extends Activity { 

     /** Called when the activity is first created. */ 
     Intent intent; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.splash_screen); 
      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
String storedUsername = prefs.getString(KEY_USERNAME, "Default Value if not found"); 
String storedPassword = prefs.getString(KEY_PASSWORD, ""); //return nothing if no pass saved 
if (!storedUsername .equalsIgnoreCase("") || !storedPassword .equalsIgnoreCase("")) { 
      intent = new Intent(this, MainActivity.class); 
      startActivity(intent); 
      finish(); 

     }else { 
      intent = new Intent(this, LoginActivity.class); 
      startActivity(intent); 
      } 

      Handler handler = new Handler(); 

      handler.postDelayed(new Runnable() { 
       public void run() { 

        startActivity(intent); 
        finish(); 
       } 
      }, 3000); 

     } 

    }// class 
+0

感謝您的回覆,其實..已經存儲登錄用戶使用共享偏好的詳細信息..我的需要是如果用戶打開我的應用程序..如果他們已經登錄意味着..重定向主頁其他重定向到登錄頁面... – Android

+0

請看看我的編碼... – Android

+0

檢查我編輯的答案。 – ryderz8

0
  1. 首先,你必須保持一個閃屏活動,您的申請。
  2. 使用,你必須保存您的登錄狀態共享偏好(默認爲「假」,登錄後「真」)是指這個鏈接,喜好http://developer.android.com/guide/topics/data/data-storage.html
  3. 在啓動應用程序的時候,你必須檢查登錄狀態的基礎上,該值可以導航到相應的活動。
+0

感謝您的回覆..請您給我看一些樣本編碼.. – Android

+0

請查看我的編碼... – Android

+1

如果您已經登錄到設備,它將正確地進行主要活動,但是如果您想要爲其他用戶的登錄活動你應該先註銷同一個設備,你必須註冊偏好是錯誤的。 –

相關問題