我有一个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