2011-07-15 11 views
5

Muszę wywołać setContentView (int) z mojej głównej aktywności z innej klasy, która nie rozszerza działania.Jak używać setContentView (int) z klasy, która nie rozszerza działania

W mojej klasie niestandardowej mam private Context context; var, który jest przekazywany z Activity in the Constructor, ale nie mogę się dowiedzieć, jak uzyskać dostęp do metod Activity za pomocą zmiennej context.

Odpowiedz

10

Jeśli kontekst jest instancją klasy aktywny, prosta klasa obsada powinno działać:

Activity a = (Activity) context; 
a.setContentView(R.layout.your_layout); 
+0

To powinno działać, ale nie wiem, dlaczego układ nie jest faktycznie zmieniło .. I m debugowanie i kod dostaje się tam i najwyraźniej jest on wykonywany, ale nie ma żadnego efektu. Po prostu wykonuję: Aktywność a = (Aktywność) kontekst; a.setContentView (R.layout.first); – sergi

+0

Dzięki temu rozwiązaniu, na przykład mogę uzyskać tekst z TextView, ale nie mogę ustawić tekstu, ponieważ nie jest on ustawiony. – sergi

+0

@sergi Czy jesteś pewien, że jest wykonywany w fazie działania onCreate? –

1

Jednym z rozwiązań (może nie być najbardziej eleganckim) jest przekazanie aktywności wywołującej do drugiej klasy, a nie tylko do kontekstu.

0

Trzeba by przekazać w odniesieniu do działalności, której używasz.

coś takiego

class ActivityA extends Activity{ 
    @Override 
    public void onCreate(Bundle state){ 
     super.onCreate(state); 
     ClassA myclass = new ClassA(this); 
    } 
} 

a następnie Klasa A musiałaby:

class ClassA { 
    public ClassA(Activity yourActivity){ 
     ... Get your view here .... 
     yourActivity.setContentView(view); 
     ... do more things... 
    } 
} 
Powiązane problemy