我的问题类似于这个问题Can't make static reference to non-static method ( Android getApplicationContext() ) 我需要获取 SherlockFragmentActivity 的上下文才能访问数据库类。我尝试了上面这个链接中的解决方案,但没有奏效。
问题 1:如何在下面的代码中获取上下文。
问题 2:我收到一个错误,迫使我对应用程序上下文变量使用“静态”而不是公共。我知道 static 是一个不变的变量。但是,每次单击选项卡时,此变量都会更改。此外,数据库类不需要“静态”变量。我很困惑为什么我需要一个静态变量。
我的 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
}
}
}