getActivity() と FragmentActivity:アンドロイド
-
12-12-2019 - |
質問
私は別の抽象クラスを拡張するこのクラス 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;
}
解決
FragmentActivity
はActivity
のインスタンスです(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
アクティビティ インスタンスを参照するキーワード。