bonjour,
Je souhaite modifier dynamiquement le contenu d'un spinner en fonction d'un autre spinner. Apparement il faut passer par un ArrayAdapter. je me suis inspiré de http://developer.android.com/guide/t...s/spinner.html
Je n'ai pas d'erreur de compilation, mais à l'éxécution j'ai une erreur:
mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 08-01 23:42:07.758: E/AndroidRuntime(19832): FATAL EXCEPTION: main 08-01 23:42:07.758: E/AndroidRuntime(19832): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.tonnerreapp/com.example.tonnerreapp.PlayBookViewer}: java.lang.IllegalStateException: System services not available to Activities before onCreate() 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1743) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread.access$1500(ActivityThread.java:132) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.os.Handler.dispatchMessage(Handler.java:99) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.os.Looper.loop(Looper.java:150) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread.main(ActivityThread.java:4293) 08-01 23:42:07.758: E/AndroidRuntime(19832): at java.lang.reflect.Method.invokeNative(Native Method) 08-01 23:42:07.758: E/AndroidRuntime(19832): at java.lang.reflect.Method.invoke(Method.java:507) 08-01 23:42:07.758: E/AndroidRuntime(19832): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 08-01 23:42:07.758: E/AndroidRuntime(19832): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 08-01 23:42:07.758: E/AndroidRuntime(19832): at dalvik.system.NativeStart.main(Native Method) 08-01 23:42:07.758: E/AndroidRuntime(19832): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate() 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.Activity.getSystemService(Activity.java:3697) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.widget.ArrayAdapter.init(ArrayAdapter.java:271) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:113) 08-01 23:42:07.758: E/AndroidRuntime(19832): at com.example.tonnerreapp.PlayBookViewer.<init>(PlayBookViewer.java:14) 08-01 23:42:07.758: E/AndroidRuntime(19832): at java.lang.Class.newInstanceImpl(Native Method) 08-01 23:42:07.758: E/AndroidRuntime(19832): at java.lang.Class.newInstance(Class.java:1409) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 08-01 23:42:07.758: E/AndroidRuntime(19832): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1735) 08-01 23:42:07.758: E/AndroidRuntime(19832): ... 11 more
et pour finit mon xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class PlayBookViewer extends Activity { final ArrayAdapter<String> adapterWR = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.routeWRChoices); final ArrayAdapter<String> adapterTE = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.routeWRChoices); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.playbook_vwr); spinnerPos.setOnItemSelectedListener(new OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if(((String) ((Spinner)arg0).getSelectedItem()).contains("TE")){ ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.routeTEChoices, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(R.layout.playbook_vwr); spinnerRoutes.setAdapter(adapter); }else{ ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.routeWRChoices, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(R.layout.playbook_vwr); spinnerRoutes.setAdapter(adapter); } } public void onNothingSelected(AdapterView<?> arg0) { } }); }
</RelativeLayout>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".PlayBookViewer" > <TextView android:id="@+id/pb_header" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cahier_de_jeu" android:textAppearance="?android:attr/textAppearanceLarge" /> <Spinner android:id="@+id/positionChoice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/pb_header" android:layout_marginTop="10dp" android:entries="@array/positionChoices" /> <Spinner android:id="@+id/routeChoice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/pb_header" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_toRightOf="@+id/positionChoice" android:entries="@array/routeWRChoices" />
merci d'avance!
Partager