2011-07-15 31 views
5

我需要從另一個未擴展Activity的類中的主Activity調用setContentView(int)。如何從未擴展的類使用setContentView(int)活動

在我的自定義類中,我得到了private Context context; var從構造函數中傳遞的var,但我無法弄清楚如何使用context變量訪問Activity方法。

回答

10

如果你的環境是活動類的一個實例,簡單的類轉換應該工作:

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

這應該工作,但我不知道爲什麼,佈局沒有被實際改變.. 我m調試和代碼到達那裏,顯然它被執行,但它沒有效果。 我只是在做: 活動a =(Activity)上下文; a.setContentView(R.layout.first); – sergi

+0

有了這個解決方案,例如我可以從TextView中獲取文本,但我無法設置文本,因爲它沒有被設置。 – sergi

+0

@sergi您確定它是在onCreate活動階段內執行的嗎? –

1

一個解決方案(可能不是最優雅的)是將調用活動傳遞給另一個類,而不僅僅是上下文。

0

你將不得不在你正在使用的活動引用傳遞。

像這樣的事情

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

然後A類將有:

class ClassA { 
    public ClassA(Activity yourActivity){ 
     ... Get your view here .... 
     yourActivity.setContentView(view); 
     ... do more things... 
    } 
} 
相關問題