我目前正在尝试从其他活动中更改标签 - 这很简单。但是,我在尝试设置其他标签的可见性时遇到了麻烦。
基本上,我有一个应用程序加载到选项卡(登录页面),其他选项卡在用户登录之前是不可见的。
当用户登录时,我想让其他标签可见,登录标签不可见。
如果有一种简单的方法可以让我意识到这一点 - 我目前正在圈子里跑来跑去:
代码段:
在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)
很明显异常来自不可见/可见的设置。
答案 0 :(得分:0)
我不知道tabHost.getTabWidget().getChildAt(0)
是否是正确的做法。您是否尝试过为标签提供个人ID?
或者,如果您想尝试跟踪错误的确切位置,则抛出一堆断点并在调试模式下运行它。
哦Button btn = (Button)this.findViewById(R.id.login_button);
我相信可以没有“这个”(虽然我可能是错的......但是我从未在按钮声明中使用过this
)