質問

私は別の抽象クラスを拡張するこのクラス A を使用しています (そして、この抽象クラスは FragmentActivity を拡張します)。A クラス内の関数の 1 つで、現在のアクティビティ A の getActivity() を取得したいと考えています。しかし、 getActivity を使用するたびに、 getActivity() メソッドがクラスに定義されたタイプではないというエラーが表示されます。私を助けてください !!どうすればこれを達成できますか??

私のクラスAのコード

 public class A extends B
 {
  protected void onCreate(Bundle savedInstanceState) 
   {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.voicing);

    //doing another initializations and stuff//

   }
  }

クラスBのコード

   public abstract class B extends FragmentActivity 
  {


   FragmentAdapter mAdapter;
   ViewPager mPager;
   PageIndicator mIndicator;


 }
役に立ちましたか?

解決

FragmentActivityActivityのインスタンスです(Javaスタイル:FragmentActivity extends Activity)。

だからgetActivityは既にFragmentActivityであるため、Acivityを呼び出すポイントはありません。thisクラスには、getActivityというメソッドはありません。つまり、BクラスはFragmentActivityインスタンスを拡張しています。

SOあなたのA(またはB)クラスの中でこのコードスニペットを使用してアクティビティインスタンスを取得できます。

Activity test = (Activity) this;
.

しかし、BクラスがActivityを拡張した場合、Fragment呼び出しは機能しました。

他のヒント

FragmentActivity の代替品です Activityサポートパッケージ. 。あなた以来 class B 伸びる FragmentActivity そして後であなたの class A 伸びる class B, したがって、あなたの class A も言及しています Activity (別名 FragmentActivity).

つまり、メソッドを呼び出す必要はありません。単純に使用する this アクティビティ インスタンスを参照するキーワード。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top