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;


 }
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top