我的問題與此問題類似Can't make static reference to non-static method (Android getApplicationContext()) 我需要獲取SherlockFragmentActivity的上下文以訪問數據庫類。我在上面的這個鏈接中嘗試瞭解決方案,但沒有奏效。無法使用SherlockFragmentActivity獲取應用程序上下文
問題1:如何在下面的代碼中獲取上下文。
問題2:我得到一個錯誤,迫使我對應用程序上下文變量使用「static」而不是public。我知道靜態是一個不會改變的變量。但是,每次點擊一個標籤時,這個變量都會改變。另外,數據庫類不需要'靜態'變量。我很困惑,爲什麼我需要一個靜態變量。
我SherlockFragmentActivity:
public class FragmentTabs extends SherlockFragmentActivity {
TabHost mTabHost;
TabManager mTabManager;
static FragmentTabs appState;
TabSwitchIdDatabase tsid = new TabSwitchIdDatabase(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(SampleList.THEME); // Used for theme switching in samples
super.onCreate(savedInstanceState);
appState = ((FragmentTabs)getApplicationContext());
//.... more code
}
public static class TabManager implements TabHost.OnTabChangeListener {..// see code snipit below....}
}
,我需要把上下文
public static class TabManager implements TabHost.OnTabChangeListener {
//... more code
static class DummyTabFactory implements TabHost.TabContentFactory {
//... more code
@Override
public void onTabChanged(String tabId) {
TabInfo newTab = mTabs.get(tabId);
System.out.println(tabId);
tsid.open();// broken , scoping problem
Boolean x =tsid.tabExists(0);
String tabIDfromDatabase = tsid.getTab(0);// broken , scoping problem
tsid.close();// broken , scoping problem
}
}
}