2012-06-09 85 views
0

我需要的除非我的平板电脑连接到服务器我无法更改标签。我有一个标签主机,它们都运行在同一个java文件中。我想我需要做的就是在文件中进行某种测试,除非布尔值为true,否则不要让代码更改选项卡。但是我不知道如何做到这一点?如果您需要查看我的任何代码,请将其留在评论框中。感谢你的帮助 !停止更改标签

+0

我不明白你的问题,你问如何知道你的应用程序是否连接到你的服务器? – marmor

+0

我的问题是。有没有办法让你点击一个标签。除非我设置了一些东西,否则它将不起作用,所以它会再次变为活动。那有意义吗? –

回答

1

嗯,我想你可以尝试禁用/调用启用在标签上点击:

myTabHost.getTabWidget().setClickable(isConnectedToServer); 

但我不知道这是很好的UX,怎么样让你的用户更改标签,但如果内容能将无法到达在标签的主视图内显示一条消息“服务器无法访问,请检查您的互联网连接”或类似的东西。

UPDATE: 试试这个(为每个标签页):

myTabHost.getTabWidget().getChildTabViewAt(0).setEnabled(false); 
myTabHost.getTabWidget().getChildTabViewAt(1).setEnabled(false); 
myTabHost.getTabWidget().getChildTabViewAt(2).setEnabled(false); 

另一个更新:

public class MyActivity extends Activity { 
    private TabWidget mTabWidget = null; 
    protected void onCreate(Bundle savedInstanceState) { 
    ... 
    mTabWidget = myTabHost.getTabWidget(); 
    ... 
} 

protected void refreshTabs(boolean isConnected) { 
    mTabWidget.getChildTabViewAt(0).setEnabled(isConnected); 
    mTabWidget.getChildTabViewAt(1).setEnabled(isConnected); 
    mTabWidget.getChildTabViewAt(2).setEnabled(isConnected); 
} 

现在,您可以拨打refreshTabs,只要你想在你的代码,使他们能/禁用。

+0

所以我做的是'th.getTabWidget().setClickable(connected);'和th由'final TabHost th =(TabHost)findViewById(R.id.tabhost)'定义;'但是它不起作用,当它没有连接,它仍然会改变标签,我做错了什么? –

+0

看到我上面的编辑 – marmor

+0

它的作品谢谢!但是我在onCreate部分有这个,所以当我将布尔值更改为true时,它不会更改为true,因为它没有意识到它,但是如果我将其移出创建它,则无法识别TabHost。我应该把它放在哪里才能使它工作? –