2013-11-27 107 views
0

我有一個indexActivity,有用戶名和密碼以及登錄按鈕的編輯文本文本。當用戶點擊登錄按鈕時,將執行一個異步類(將通過服務器調用完成認證)。如果成功驗證homeActivity將啓動,使用意圖。如何保持登錄狀態跳過啓動器活動?

在宣言中,我將indexActivity設置爲我的啓動程序Activity。

我想始終保持登錄狀態,我的意思是在登錄後,當用戶按回應用程序按鈕的應用程序將最小化,當它再次啓動時,它可能應該去homeActivity。

我聽說過sharedPreference,但我不知道如何在我的情況下使用它。我是Android的新手,我對這種情況有所懷疑。所以請提供實施我的要求的正確方法。

還有一個疑問是,從身份驗證結果中,我傳遞了一些具有意圖的對象,這些對象在homeActivity中是需要的。那麼我能做什麼?

由於提前

+0

請更改您的問題。 – MAkS

+0

@ user3017713你解決了嗎? – axierjhtjz

+0

是的......感謝您的貢獻。 – user3017713

回答

2

正如你所說,你應該使用SharedPreferences,像這樣

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
Editor editor = prefs.edit(); 
editor.put("login_data", the_api_token); 
editor.commit(); 

That's用於保存打開的會話。現在你應該檢查這個參數,當indexActivity在像這樣的onCreate方法上啓動時。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
if (prefs.getString("login_data", null) != null) { 
    // Start next activity 
} 

所以當用戶單擊後退按鈕它從未追溯到indexActivity它應該是偉大的在清單上設置您的indexActivity的android:noHistory="true"選項,它會退出到主屏幕。

編輯下一個疑問

沒有實現Parcelable不能throught意圖傳遞,所以如果你需要得到您的一些物體上的其他活動,你刨去每一個自定義對象按照你應該實現的意圖去做。

這裏有一個關於如何做的小指南。

http://developer.android.com/reference/android/os/Parcelable.html

希望它能幫助:)

0

樂施會我會解釋ü詳細使一個會話類,並在這方面我們這樣寫

public class Session { 

    private SharedPreferences prefs; 

    public Session(Context cntx) { 
     // TODO Auto-generated constructor stub 
     prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
    } 


    public void setIslogin(boolean Islogin) { 
     prefs.edit().putBoolean("Islogin", Islogin).commit(); 
     prefsCommit(); 
    } 

    public boolean getIslogin() { 
     boolean Islogin = prefs.getBoolean("Islogin", false); 
     return Islogin; 
    } 
} 
now when u first time login successfully then just call `session.setIslogin(true);` 
爲sharedPreference代碼

然後在啓動畫面只是提到像這樣或像這樣檢查

Session session = new Session(this); 
     boolean TimeToLoad = session.getIslogin(); 
      if(TimeToLoad) 
     { 
      Intent i = new Intent(this, AFTER_LOGIN_CLASS_NAME.class); 
      startActivityForResult(i, 1); 
     } 

我認爲這將幫助ü:)好運

0

的你可以考慮在發送和接收活動intent.putExtra("key","value")intent.getExtra("key","value")的方法來發送和接收值。

它是一個android功能,您的應用程序將從您最小化的同一活動中打開。你不必爲它編寫任何代碼。 但是,如果您的應用程序長時間被最小化,Android本身會殺死您的應用程序。

+0

感謝您的迴應,但我認爲這不是我所問 – user3017713

+0

「還有一個疑問是,從身份驗證結果中,我傳遞了一些具有intent的對象,並且這些對象在homeActivity中是必需的,那我該怎麼辦? 「我的回答用引號反映了你的問題 –