Android - 从内部选项卡活动更改选项卡可见性

时间:2011-04-13 00:42:40

标签: android tabs visibility switch-statement

我目前正在尝试从其他活动中更改标签 - 这很简单。但是,我在尝试设置其他标签的可见性时遇到了麻烦。

基本上,我有一个应用程序加载到选项卡(登录页面),其他选项卡在用户登录之前是不可见的。

当用户登录时,我想让其他标签可见,登录标签不可见。

如果有一种简单的方法可以让我意识到这一点 - 我目前正在圈子里跑来跑去:

代码段:

在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)

很明显异常来自不可见/可见的设置。

1 个答案:

答案 0 :(得分:0)

我不知道tabHost.getTabWidget().getChildAt(0)是否是正确的做法。您是否尝试过为标签提供个人ID?

或者,如果您想尝试跟踪错误的确切位置,则抛出一堆断点并在调试模式下运行它。

Button btn = (Button)this.findViewById(R.id.login_button);我相信可以没有“这个”(虽然我可能是错的......但是我从未在按钮声明中使用过this

相关问题