私はLinearLayout
を別のクラスから変更しようとしていますが、このコードを実行すると:
public class IRC extends PircBot {
ArrayList<String> channels;
ArrayList<Integer> userCount;
ArrayList<String> topics;
LinearLayout channelLayout;
Context context;
public IRC(Context ctx) {
this.setName("xxxx");
channels = new ArrayList<String>();
userCount = new ArrayList<Integer>();
topics = new ArrayList<String>();
context = ctx;
channelLayout = (LinearLayout) ((Activity) context).findViewById(R.id.channels);
}
ClassCastException
を取得します
コンテキストは、getApplicationContext()で渡されるActivity
を拡張するメインアクティビティです。
[〜#〜] logcat [〜#〜]
05-08 17:53:55.102 3736-3799/g.d.allinonechat E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-5357
Java.lang.ClassCastException: Android.app.Application cannot be cast to Android.app.Activity
at g.d.xxx.IRC.<init>(IRC.Java:34)
at g.d.xxx.MainActivity$1.run(MainActivity.Java:49)
at Java.lang.Thread.run(Thread.Java:856)
Activity Context
ではなくContext
ではなくアプリケーションを渡します
getApplicationContext();
渡す場所はどこでも、代わりにthis
またはActivityName.this
を渡します。
Context
をキャストしようとしているので、次のようにActivity
に(想定どおりのアクティビティではなくアプリケーション)を渡します。
(Activity)
applicationはActivity
のサブクラスではないため、アプリケーションをActivity
にキャストできないため、この例外が発生します。
私の場合、AppCompatActivity
から拡張されたアクティビティにいるとき、それは機能しませんでした(Activity) getApplicationContext ()
、私はちょうどその場所に_this
を置いた。