2014-09-26 54 views
0

我有一個MainPage活動,用戶登錄後採取。該活動然後動態繪製一個按鈕在屏幕上找到它找到的每個子類別在TableLayout的數據庫中。這是有效的,但是如果用戶註銷並重新登錄,MainPage將顯示兩倍的按鈕數量(它永遠不會刪除原始設置)。使用removeView()移除的視圖在那裏,當我下次打開活動(Android)

我已經嘗試在用戶使用removeView()註銷之前刪除按鈕。但是,當用戶按下注銷時,按鈕消失並且登錄活動被打開。當用戶在第一組按鈕中重新登錄時仍然在屏幕上以及新設置中。

我是一個android新手,我找不到任何人有類似的問題,所以我不知道如果我在這裏犯了一個相當愚蠢的錯誤。在我看來,我必須錯誤地打開MainPage,但我不確定。

以下是我認爲與此問題相關的代碼。

LoginActivity,我使用打開MainPageActivity行如果成功登錄:

Intent mainPage = new Intent(getApplicationContext(), MainPageActivity.class); 
    mainPage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mainPage.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(mainPage); 

    // Close Login Screen 
    finish(); 

MainPageActivity,方法是剛剛閉幕的活動當用戶按下退出之前調用。

public void removeSectionButtons(TableLayout tableLayout){ 
    int noOfRows = tableLayout.getChildCount(); 
    System.out.println("rows was "+noOfRows); 

    for(int i = 0; i<noOfRows; i++){ 
     int id=i+1; 
     TableRow row = (TableRow) tableLayout.getChildAt(id); 
     tableLayout.removeView(row); 
    } 

} 

MainPageActivity,按下注銷時onOptionsItemSelected()中的情況。

 case R.id.action_logout: 
     tableLayout = (TableLayout)findViewById(R.id.MainPageTableTitle); 
     removeSectionButtons(tableLayout); 

     //code here to log out the user 
     menuHelper.logoutUser(userFunctions, getApplicationContext()); 
     return true; 

而在MenuHelper類最後logoutUser()方法:

 public void logoutUser(UserFunctions userFunctions, Context context){ 
     userFunctions.logoutUser(context); 
     Intent login = new Intent(context, LoginActivity.class); 
     login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     login.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     context.startActivity(login); 
     finish(); 
     } 
+0

爲什麼在添加按鈕之前不要移除按鈕?即在調用'addSectionButtons'之前調用'removeSectionButtons' – 2014-09-26 08:59:24

+0

這似乎並不是不幸的。我在過去發現,當我第一次打開該活動並在表格佈局上調用getChildCount()時,它會顯示0(即使從上次登錄時屏幕上顯示按鈕)。然後,我再次調用drawButtons()並在調用getChildCount()之後立即調用它,並且它具有正確數量的子項(數據庫中的按鈕+以前打開活動時繪製的按鈕)。所以removeSectionButtons()不會工作,因爲它被稱爲getChildCount()返回0.你知道爲什麼會發生這種情況嗎?謝謝你的時間 – user3707803 2014-09-26 09:13:05

回答

0

這是我不好,removeView()的工作。問題在於我的數據庫處理。每次用戶註銷時,我都沒有擦除手機上的SQLite數據庫......但每次他們登錄時,我都將數據從服務器複製到Lite數據庫中。

這意味着當用戶註銷並重新登錄到數據庫中的所有字段時,它們已經被複制,因此我的代碼正在顯示數據庫中的內容。

相關問題