私の問題はこの質問に似ています 非静的メソッド ( Android getApplicationContext() ) への静的参照を作成できません データベース クラスにアクセスするには、SherlockFragmentActivity のコンテキストを取得する必要があります。上記のリンクの解決策を試しましたが、うまくいきませんでした。
質問 1: 以下のコードでコンテキストを取得するにはどうすればよいですか。
質問 2: アプリケーション コンテキスト変数に public ではなく「static」を使用するよう強制するエラーが表示されます。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
}
}
}