getActivity() mit in FragmentActivity:Android
-
12-12-2019 - |
Frage
Ich verwende diese Klasse A, die eine andere abstrakte Klasse erweitert (und diese abstrakte Klasse erweitert FragmentActivity ) und in einer meiner Funktionen mit in einer Klasse möchte ich getActivity () für meine aktuelle Aktivität A erhalten.Aber wenn ich getActivity verwende, gibt es eine Fehlermeldung, dass die Methode getActivity () kein definierter Typ für meine Klasse ist.Bitte hilf mir !!Wie kann ich das erreichen??
Code für meine Klasse A
public class A extends B
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.voicing);
//doing another initializations and stuff//
}
}
code für Klasse B
public abstract class B extends FragmentActivity
{
FragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
}
Lösung
A FragmentActivity
ist eine Instanz von Activity
(im Java-Stil: FragmentActivity extends Activity
).
Es macht also keinen Sinn anzurufen getActivity
weil ein FragmentActivity
ist bereits ein Acivity
, also einfach anrufen / benutzen this
wird funktionieren.Es gibt auch keine Methode namens getActivity
in der FragmentActivity
Klasse.Mit anderen Worten, Ihre B-Klasse erweitert eine Activity
Instanz.
Also könnten Sie in Ihrer A (oder B) Klasse dieses Code-Snippet verwenden, um die Aktivitätsinstanz zu erhalten:
Activity test = (Activity) this;
Aber wenn deine B-Klasse erweitert wird Fragment
dann die getActivity
anruf hätte funktioniert.
Andere Tipps
FragmentActivity
ist eine Alternative zu Activity
in unterstützungspaket.Seit Ihrem class B
erweitern FragmentActivity
und später deine class A
erweitern class B
, deshalb dein class A
bezieht sich auch Activity
(alias FragmentActivity
).
Kurz gesagt, Sie müssen keine Methode aufrufen.verwenden sie einfach this
schlüsselwort, um auf Ihre Aktivitätsinstanz zu verweisen.