【发布时间】:2011-08-04 08:01:00
【问题描述】:
我目前正在尝试从其他活动内部更改选项卡——这很简单。但是,我在尝试设置其他选项卡的可见性时遇到了问题。
基本上,我有一个应用程序加载到一个选项卡(登录页面),而其他选项卡在用户登录之前是不可见的。
当用户登录时,我想让其他标签可见,而登录标签不可见。
如果有一个简单的方法可以做到这一点,请让我知道——我目前正在兜圈子:
代码片段:
在 TabHost 的 OnCreate 中:
.....
tabHost.setCurrentTab(3);
tabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);
tabHost.getTabWidget().getChildAt(1).setVisibility(View.GONE);
tabHost.getTabWidget().getChildAt(2).setVisibility(View.GONE);
....
TabHost 的额外方法:
public void switchTab(int tab){
tabHost.setCurrentTab(tab);
}
public void visibleTabs(){
tabHost.getTabWidget().getChildAt(0).setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildAt(1).setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildAt(2).setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildAt(3).setVisibility(View.GONE);
}
public void invisibleTabs(){
tabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);
tabHost.getTabWidget().getChildAt(1).setVisibility(View.GONE);
tabHost.getTabWidget().getChildAt(2).setVisibility(View.GONE);
}
标签活动:
public class LoginActivity extends Activity {
EditText txt_username;
EditText txt_password;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button btn = (Button)this.findViewById(R.id.login_button);
final EditText txt_username = (EditText) findViewById(R.id.txt_username);
final EditText txt_password = (EditText) findViewById(R.id.txt_username);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = txt_username.getText().toString();
String password = txt_password.getText().toString();
switchTabInActivity(0);
}
});
}
public void switchTabInActivity(long indexTabToSwitchTo){
waiter ParentActivity = (waiter) this.getParent();
ParentActivity.visibleTabs();
ParentActivity.switchTab(0);
}
}
LogCat如下:
04-12 19:37:49.825: ERROR/AndroidRuntime(2744): FATAL EXCEPTION: main
04-12 19:37:49.825: ERROR/AndroidRuntime(2744): java.lang.NullPointerException
04-12 19:37:49.825: ERROR/AndroidRuntime(2744): at android.waiter.waiter.visibleTabs(waiter.java:130)
04-12 19:37:49.825: ERROR/AndroidRuntime(2744): at android.waiter.LoginActivity.switchTabInActivity(LoginActivity.java:56)
04-12 19:37:49.825: ERROR/AndroidRuntime(2744): at android.waiter.LoginActivity$1.onClick(LoginActivity.java:44)
很明显异常来自不可见/可见设置。
【问题讨论】:
-
谢谢,你的问题对我帮助很大
标签: android tabs visibility switch-statement