Sprawdzanie otwartego Activity - Android

0

Witam, jestem początkującym w programowaniu na Androida. Mam problem.
Otóż mam klasę X a w niej metodę X1.
Mam także kilka Activity - w nich menu w którym można przychodzić pomiędzy nimi.

Chciałbym w metodzie X1 w jakiś sposób sprawdzić if'em w jakim activity się w tej chwili znajduję,

Jako iż jestem w tym kompletnym "beginner" proszę o wyrozumiałość :D

Z góry dziękuję za odpowiedzi i pozdrawiam.

1
 ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
  List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
  ComponentName componentInfo = taskInfo.get(0).topActivity;
  Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+"   Package Name :  "+componentInfo.getPackageName());
0

Co więc robic?
Jestem poczatkujacy BARDZO. Gdzie mam to zamiescic. W jaki sposob dokonac sprawdzenia?

0

Powiedz więcej o obiektach swojej klasy X, jaki mają cykl życia, są tworzone w każdej Activity czy masz jeden obiekt na przestrzeni całej aplikacji? Jakie informacje potrzebujesz o aktywnosci w ktorej sie 'znajdujesz' - nazwe, typ, cały obiekt?

0

Tworzę bardzo prosty czytnik RSS
Mam tablice z linkami w klasie A i w klasie B ładuję tablicę do czytania z RSS.
Chciałbym w odpowiednim Activity ładować odpowiednią tablicę linków.

0

Chłopskim rozumem (zapewne sposob malo optymalny) chcialem przy wyborze Activity w menu nadawac wartosci zmennej int i w metodzie sprawadzac Activity na podstawie jej wartosci. Ale czy to madre i w ogóle mozliwe? Poza tym nie obsluzy to powrotu do starego Activity przyciskiem Back w telefonie.

0

Użyj obiektu Bundle (http://developer.android.com/reference/android/os/Bundle.html) do przekazania tablicy linków z aktywności A do B. Obiekt Bundle pakujesz do intencji, którą startujesz aktywność B.

0

Tak, próbowałem z bundle, jednak ta tablica nie znajduje się w Activity lecz w swojej klasie. Jak chciałem użyć Bundle to przy odbieraniu nie rozpoznawało nazwy getIntent.

0

Up ;p

0

Zrób sobię swoją metodę w abstrakcyjnej klasie Activity i każde Activity niech dziedziczy po niej (ewentualnie niech każde activity implementuje jakiś interfejs) później rzutuj sobie ativity na swoje abstract activti i wywołana metoda Ci zwroci to co chcesz ( niech to będzie nazwa czy inne rzecz którą sobie wymyślisz)

0

Niestety, nadal nie poradziłem sobie z problemem. Przekazywanie przez Bundle w tym przypadku nie działa, poza tym nie jest to zbyt mało optymalny sposób. Chciałbym tylko w pewnej klasie w jakiś magiczny sposób sprawdzić jakie Activity jest otwarte, abym mógł wyświetlić odpowiednie dane.

Przedstawię schemat aplikacji:
Otwiera się menu glówne, w nim do wyboru różne żródła RSS (activity1)
Użytkownik wybiera odpowiednie żródło i otwiera się odpowiedni ekran - i tutaj chciałbym inportować odpowiednią tablicę linków żródeł RSS.

Mam klasę Constants w której są te tablice z linkami. Mam też drugą klasę, która korzysta z jednej z tych tablic. I własnie w tej klasie chciałbym, aby korzystała z odpowiedniej tablicy w zależności od tego w jakim ekranie(jakie zrodlo RSS wybrał) użytkkownik.

Nie mam już kompletnie pomysłów, dlatego opisałem to myślę dość szczegółowo. Z góry dziękuję za pomoc. Pozdrawiam serdecznie.

0

No przecie Ci napisałem jak to zrobić.

Zrób sobie interfejs zwróć moją aktiwiti i niech każda activity to implementuje. i tada problem rozwiązany

0

No tak, tylko ze ja jestem amator full pro i nie kumam tego co napisales :p

Nie wiem co co rozumiec przez "zrob sobie interfejs"

0

To proponuję zająć się najpierw podstawami JAVY a dopiero wtedy brać się za androida.

robisz interfejs ,jeszcze może z bajerem IntDefa użyć żeby było fajniej

  public abstract class MyActvitiy extends Activity {

private int kindOfActivity;


  @IntDef({MY_FIRST_ACTIVITY, MY_SECOND_ACTIVITI, MY_THIRD_ACTIVITI})
    public @interface KindOfActivity {
    }
  public static final int MY_FIRST_ACTIVITY = 0;
  public static final int MY_SECOND_ACTIVITI = 1;
  public static final int MY_THIRD_ACTIVITI = 2;
  ...
  public  void setNavigationMode(@NavigationMode int mode){kindOfActivity=mode};
  @NavigationMode
  public  int getNavigationMode(){return kindOfActivity};
}

i w ten prosty sposób ustawiasz sobie w onCreate który masz typ a później sobie odczytujesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1