2011-07-15 10 views
5

Activityを拡張していない別のクラスのmainアクティビティからsetContentView(int)を呼び出す必要があります。Activityを拡張しないクラスからsetContentView(int)を使用する方法

私のカスタムクラスでは、private Context context; varがコンストラクタのアクティビティから渡されていますが、context変数を使用してアクティビティメソッドにアクセスする方法を理解できません。

答えて

10

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

これは動作するはずですが、私は、レイアウトが実際に変更されていない理由を、知らない... 私は」デバッグとコードがそこに着いて、それは実行されたが、それは効果がありません。 私はちょうど行っています: アクティビティa =(アクティビティ)コンテキスト; a.setContentView(R.layout.first); – sergi

+0

このソリューションでは、たとえばTextViewからテキストを取得できますが、設定されていないためテキストを設定できません。 – sergi

+0

@sergi onCreateアクティビティフェーズで実行されていますか? –

1

1つの解決策(最もエレガントではないかもしれません)は、呼び出しアクティビティを文脈だけでなく、他のクラスに渡すことです。あなたのコンテキストがActivityクラスのインスタンスである場合は、単純なクラスのキャストが動作するはず

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... 
    } 
} 
関連する問題