2017-03-03 31 views
0

我是Android的初學者。在我的應用程序中,我使用mutiplefragment創建了一個活動。 在我的應用程序中,我將第一個屏幕顯示爲登錄屏幕。如果輸入用戶名和密碼,則應顯示我的家庭片段,否則應顯示登錄屏幕。如何通過使用共享首選項來完成此操作?誰能幫我? 下面是我的代碼:一次登錄破產活動

LOGINFRAGMENT:

public void setLoginScreen(String usename, String password) { 
    String userName = Mainactivity._sharedPreferences.getString("userName", "null"); 
    Editor editor = Mainactivity._sharedPreferences.edit(); 
    editor.putString("userName", username); 
    editor.putString("Pass", password); 
    if (customerSNo.equals(username)) { 
    } else { 
     editor.putBoolean("loginStatus", false); 
    } 
    editor.commit(); 

} 

如果是假,將推出的登錄屏幕,但如果真如何啓動主屏幕?

+0

您可以爲登錄創建活動,因爲它具有單獨的邏輯。您不應該使用片段進行登錄,您可以爲片段創建另一個活動(容器)。如果你剛接觸android,你應該看看活動和片段生命週期 – Hmm

回答

0

如果我有你的權利,你要顯示登錄片段在用戶未登錄並指示他的家庭片段時未登錄他

需要實現什麼: 1)應用程序啓動後,在您MainActivity(我想這是管理您的片段)檢查用戶是否登錄:

String userName = sharedPreferences.getString("userName", null); 

2)如果不是空的,我們假設用戶的授權是有效的,我們可以證明HomeFragment: (此代碼在MainActivity中)https://developer.android.com/guide/components/fragments.html?hl=en

HomeFragment fragment = new HomeFragment(); 
fragmentTransaction.add(R.id.fragment_container, fragment); 
fragmentTransaction.commit(); 

3)否則,(如果沒有用戶名)顯示LoginFragment(如在上面的例子)

4)在LoginFragment當用戶點擊「登錄」按鈕,從形式(登錄名和密碼取數據),驗證它是否有效,向SharedPreferences添加一個用戶名(這樣,下一次你的應用程序啓動時,它會知道用戶並將他指向HomeFragment)。

sharedPreferences.edit().putString("userName", username).commit(); 

5)驗證登錄數據並將其存儲在SharedPreferences中後,您需要顯示HomeFragment(請參見上面的示例)。

建議的方法僅適用於測試項目目的,但僅通過共享首選項中的用戶名值確定用戶登錄狀態並不是一個好習慣。

0

你可以創建一個函數來檢查共享偏好的登錄狀態,如果狀態是真火的意圖開始其他活動不火的意圖,並要求登錄

//inside onCreate() 
setContentView(R.layout.name_of_xml); 
//initialize your shared preferences object 
//call to login check function 
//rest of code..... 

創建這樣一個功能:

private void checkLogin(){ 
    if(sharedPreferences.getBoolean("status",false)){ 
     //(if true) , i.e user is already logged in 
     //fire intent for home activity or 
     //begin home fragment transaction 

    } else{ 
     //(if false),i.e user is not logged in 
     //fire intent for login activity or 
     //begin home fragment transaction 
    } 
}