J'essaie de changer un LinearLayout
d'une autre classe, mais quand je lance ce code:
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);
}
je reçois un ClassCastException
le contexte est l'activité principale qui étend Activity
passé avec un getApplicationContext ();
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)
Vous passez l'application Context
pas le Activity Context
avec
getApplicationContext();
Où que vous passiez, passez this
ou ActivityName.this
au lieu.
Puisque vous essayez de convertir le Context
vous passez (application pas activité comme vous le pensiez) en un Activity
avec
(Activity)
vous obtenez cette exception car vous ne pouvez pas convertir l'application en Activity
, car l'application n'est pas une sous-classe de Activity
.
Dans mon cas, lorsque je suis dans une activité allant de AppCompatActivity
, cela ne fonctionnait pas(Activity) getApplicationContext ()
, Je viens de mettre this
à sa place.