2012-06-09 83 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。我應該把它放在哪裏才能使它工作? –