Modifier dynamiquement un spinner
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:
Code:
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 |
mon code:
Code:
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) {
}
});
} |
et pour finit mon xml:
Code:
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" /> |
</RelativeLayout>
merci d'avance!