E-Kami Posté(e) 11 décembre 2011 Share Posté(e) 11 décembre 2011 Bonjour à tous! Alors voilà je suis actuellement en train de réaliser une application sur android mais j'éprouve quelques difficultés. Mon problème est que quand j'essaye de récupérer un composant à l'intérieur d'un layout en xml et que j'y applique une de ses méthode, j'obtiens tout simplement une exception. Avec le code ci-dessous: public class WiFileManagerActivity extends Activity{ public static final int DIALOG_STARTED = 0; public static final int DIALOG_EXITED = 1; public static final int DIALOG_HOST_NOT_FOUND= 2; private ServerInstance serverInstance; private static LookingForHostView lfhv; private CustomHostLoader cusDial = null; private Void v; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); showDialog(DIALOG_STARTED); lfhv = new LookingForHostView(this.getApplicationContext(), this); setContentView(lfhv); serverInstance = new ServerInstance(this); serverInstance.execute(v); } @Override protected Dialog onCreateDialog(int id) { switch(id) { case DIALOG_STARTED: cusDial = new CustomHostLoader(this); break; case DIALOG_EXITED: break; case DIALOG_HOST_NOT_FOUND: break; } return cusDial; } public void closeCustomHostLoaderDialog(){ if(cusDial != null){ cusDial.cancel(); } } } public class CustomHostLoader extends Dialog implements OnClickListener{ private TextView hostTv; private ImageButton helpButton; public CustomHostLoader(Activity parentActivity) { super(parentActivity); setContentView(R.layout.host_loader); hostTv = (TextView) parentActivity.findViewById(R.id.hostTv); //Ici l'exception est déclenchée hostTv.getText(); } public TextView getHostTv(){ return hostTv; } @Override public void onClick(View arg0) { Log.i("ProgLog", "Yahoo"); } } host_loader.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10dp" > <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/> <TextView android:id="@+id/hostTv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/progressBar1" android:layout_toRightOf="@+id/progressBar1" android:layout_marginTop="18dp" android:layout_marginLeft="10dp" android:text="Looking for host. Please wait..." /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/progressBar1" android:layout_alignRight="@+id/hostTv" android:layout_below="@+id/progressBar1" android:layout_marginTop="18dp" android:inputType="textPersonName" > </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:text="Use this IP as host IP" /> <ImageButton android:id="@+id/helpButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/button1" android:layout_alignTop="@+id/hostTv" android:layout_toRightOf="@+id/hostTv" android:src="@drawable/help" /> </RelativeLayout> J'obtiens: 12-11 01:19:06.720: E/AndroidRuntime(23834): FATAL EXCEPTION: main 12-11 01:19:06.720: E/AndroidRuntime(23834): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wifilemanager.client/com.wifilemanager.client.activity.WiFileManagerActivity}: java.lang.NullPointerException 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread.access$500(ActivityThread.java:122) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.os.Handler.dispatchMessage(Handler.java:99) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.os.Looper.loop(Looper.java:132) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread.main(ActivityThread.java:4123) 12-11 01:19:06.720: E/AndroidRuntime(23834): at java.lang.reflect.Method.invokeNative(Native Method) 12-11 01:19:06.720: E/AndroidRuntime(23834): at java.lang.reflect.Method.invoke(Method.java:491) 12-11 01:19:06.720: E/AndroidRuntime(23834): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 12-11 01:19:06.720: E/AndroidRuntime(23834): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 12-11 01:19:06.720: E/AndroidRuntime(23834): at dalvik.system.NativeStart.main(Native Method) 12-11 01:19:06.720: E/AndroidRuntime(23834): Caused by: java.lang.NullPointerException 12-11 01:19:06.720: E/AndroidRuntime(23834): at com.wifilemanager.client.dialog.CustomHostLoader.<init>(CustomHostLoader.java:29) 12-11 01:19:06.720: E/AndroidRuntime(23834): at com.wifilemanager.client.activity.WiFileManagerActivity.onCreateDialog(WiFileManagerActivity.java:46) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Activity.onCreateDialog(Activity.java:2758) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Activity.createDialog(Activity.java:936) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Activity.showDialog(Activity.java:2851) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Activity.showDialog(Activity.java:2810) 12-11 01:19:06.720: E/AndroidRuntime(23834): at com.wifilemanager.client.activity.WiFileManagerActivity.onCreate(WiFileManagerActivity.java:33) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Activity.performCreate(Activity.java:4397) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 12-11 01:19:06.720: E/AndroidRuntime(23834): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779) 12-11 01:19:06.720: E/AndroidRuntime(23834): ... 11 more Quelqu'un saurait comment résoudre ce problème? Ce que je cherche à faire est simple en fait, c'est de pouvoir récupérer des composants de mon layout host_loader.xml dans le code java de ma classe CustomHostLoader et ainsi les modifier à ma guise, comme faire un hostTv.setText("Hello world!") par exemple. Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Kami Posté(e) 12 décembre 2011 Auteur Share Posté(e) 12 décembre 2011 Problème résolu, il suffisait de changer hostTv = (TextView) parentActivity.findViewById(R.id.hostTv); en hostTv = (TextView) findViewById(R.id.hostTv); Ayant utilisé le code suivant auparavant: public class CustomHostLoader extends Dialog implements OnClickListener{ private TextView hostTv; private ImageButton helpButton; public CustomHostLoader(Activity parentActivity) { super(parentActivity.getApplicationContext()); setContentView(R.layout.host_loader); hostTv = (TextView) findViewById(R.id.hostTv); hostTv.setText("Hello world!"); } public TextView getHostTv(){ return hostTv; } @Override public void onClick(View arg0) { Log.i("ProgLog", "Yahoo"); } } renvoyait la même erreur... Je dois avouer que android prête vraiment à confusion sur certains aspects. Comme l'impact qu'a le simple fait de ne pas donner le bon argument au constructeur... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.