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