Activityを拡張していない別のクラスのmainアクティビティからsetContentView(int)を呼び出す必要があります。Activityを拡張しないクラスからsetContentView(int)を使用する方法
私のカスタムクラスでは、private Context context;
varがコンストラクタのアクティビティから渡されていますが、context
変数を使用してアクティビティメソッドにアクセスする方法を理解できません。
Activityを拡張していない別のクラスのmainアクティビティからsetContentView(int)を呼び出す必要があります。Activityを拡張しないクラスからsetContentView(int)を使用する方法
私のカスタムクラスでは、private Context context;
varがコンストラクタのアクティビティから渡されていますが、context
変数を使用してアクティビティメソッドにアクセスする方法を理解できません。
:
Activity a = (Activity) context;
a.setContentView(R.layout.your_layout);
1つの解決策(最もエレガントではないかもしれません)は、呼び出しアクティビティを文脈だけでなく、他のクラスに渡すことです。あなたのコンテキストがActivityクラスのインスタンスである場合は、単純なクラスのキャストが動作するはず
あなたが使用している活動への参照を渡す必要があります。この
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...
}
}
これは動作するはずですが、私は、レイアウトが実際に変更されていない理由を、知らない... 私は」デバッグとコードがそこに着いて、それは実行されたが、それは効果がありません。 私はちょうど行っています: アクティビティa =(アクティビティ)コンテキスト; a.setContentView(R.layout.first); – sergi
このソリューションでは、たとえばTextViewからテキストを取得できますが、設定されていないためテキストを設定できません。 – sergi
@sergi onCreateアクティビティフェーズで実行されていますか? –