2017-01-21 25 views
0

現在我正試圖根據存儲在服務器端數據庫的用戶的角色來實現應用程序的不同主要活動。登錄後,它會返回到設備。Android:根據用戶的特權,不同的activity_main.xml

這裏Single application with different UIs depending on the user's role有一個類似的話題,我想實現,但它沒有提供我想達到的。

我所做的是在MainActivity的onCreate()中加載登錄活動。之後,我檢查角色,並根據此我使用:

if (some condition here){ 
    //here I set the activity_main.xml 
} else if (condition again) { 
    //another variant of activity_main.xml 
} 

這是正確的變化嗎?如果不是,還有其他方法可以實現嗎?順便說一下,當我將用戶界面元素連接到相應條件塊外部的xml值時,即使我使用最權限用戶的登錄憑據,其接口具有最大元素(名稱爲視圖在所有xml佈局中都是相同的,文件僅在元素數量上有所不同)。

當然,我知道我會建議使用登錄屏幕作爲我的應用程序的主要功能(如上面提供的鏈接),但應用程序不會在每次啓動時都要求登錄,因此我真的不明白如何去實現所有這些東西。

任何幫助表示讚賞。

+0

使用不同的init()方法來設置佈局並初始化它們在ur上創建 – Ak9637

+0

是區別在MainActivity還是MainActivity的視圖?因爲你可以爲不同的用戶的優先權膨脹不同的佈局或片段 – aldok

回答

1

您可以根據onCreate()中的條件膨脹不同的佈局:setContentView(R.layout.your_layout);。請確保不要初始化您在佈局中未使用的小部件,因爲這可能會導致錯誤。

更完整的例子:

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (condition1) 
     setContentView(R.layout.your_layout1); 
    else 
     setContentView(R.layout.your_layout2); 
} 

我也建議在事件東西留下else狀況出了問題,所以它加載的佈局,而不是你的程序崩潰。

+1

你輸入的內容就是我實際做的。我認爲這不是一個正確的方法,因爲當從條件代碼塊中加載的活動文件初始化視圖時,我一直在收到NullPointerException。謝謝你的提示。 – Rebellious

0

我的建議是,假如你有**activity_main.xml****activity_main_two.xml**作爲2 xml文件中的每個具有不同的角色, 檢查的密碼用戶名登錄來檢驗哪一種的用戶已經登錄,然後你做出你的邏輯。

假設你在公司的兩個用戶經理員工

E,G像下面這僞代碼:

if (user_is_an_executive){ 
setContentView(R.layout.activity_main.xml); 
} 
else if (user_is_another_employee){ 
setContentView(R.layout.activity_main_two.xml); 
} 

注:

把它放在t中他onCreate方法

相關問題