2

私は別の抽象クラスを拡張するこのクラス A を使用しています (そして、この抽象クラスは FragmentActivity を拡張します) と、現在のアクティビティ A の getActivity() を取得したい A クラスの関数の 1 つです。しかし、 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;


 }
4

2 に答える 2

16

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

getActivityしたがって、 aFragmentActivityはすでに であるため、呼び出す意味はありません。Acivityそのため、呼び出し/使用thisするだけで機能します。getActivityまた、FragmentActivityクラスで呼び出されるメソッドはありません。言い換えれば、あなたの B クラスはActivityインスタンスを拡張しています。

したがって、A (または B) クラス内で、次のコード スニペットを使用してアクティビティ インスタンスを取得できます。

Activity test = (Activity) this;

しかし、あなたの B クラスが拡張されていればFragmentgetActivity呼び出しは機能していたでしょう。

于 2012-10-02T15:24:07.960 に答える
5

FragmentActivityは、サポート パッケージActivity内の代替です。あなたのextendsとその後のextendsであるため、あなたも参照しています(aka )。class B FragmentActivityclass Aclass Bclass AActivityFragmentActivity

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

于 2012-10-02T15:25:12.750 に答える