0

静的クラスからアプリケーションにアクセスしようとしていますが、このエラーが発生します

メソッドgetActivity()は、タイプPniemActivity.MyFragmentAdapterに対して未定義です。

しかし、getActivity()を除外すると、次のメッセージが表示されます。

タイプActivityから非静的メソッドgetApplication()への静的参照を作成できません

これは私のコードです。

private static class MyFragmentAdapter extends FragmentPagerAdapter{
    private final int NUM_OF_PAGES = 10;

    public MyFragmentAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int index){
        return PageFragment.newInstance("Hoi "+ index );

    }

    @Override
    public int getCount(){
    appData = ((myApp) getActivity().getApplication()).slaughterData;

        return NUM_OF_PAGES;


    }


}

データベースから必要な量のフラグメントを取得したいので、アプリケーションにアクセスしたいのです。

何か案は?

ありがとう

4

2 に答える 2

1

DBからカウントを取得することが唯一の理由である場合は、getCount()メソッドからDBをクエリするだけです。

静的フィールドでアクティビティを取得したい場合(これは一般的に悪いです):アクティビティ:

public static MyActivity instance;

onCreate(){
  instance = this;

}

アプリのどこでも:

MyActivity instance = MyActivity.instance;

このソリューションを使用すると、トラブルに巻き込まれることになりますので、注意してください。私はJavaで動作しますが、Androidでどのように動作するかは保証されていません。

于 2012-12-12T20:59:46.167 に答える
1

私が知る限り、getActivity()はFragmentPageAdapterではなく、Fragmentのメソッドです。現在のFragmentはFragmentManager(参照先があります)から取得できますが、Vladimirがコメントで示唆しているように私はおそらくそうします:

  1. アプリケーションをAndroidManifestに拡張するクラスを追加します。
  2. シングルトンパターンを(getInstanceメソッドを使用して)実装するか、アプリケーションサブクラスにパブリック静的参照を追加するだけです
于 2012-12-12T22:48:13.487 に答える