Très bien, je suis nouveau à la programmation Android, jusqu'à présent, mon expérience a été très intéressante et stimulante. Mais je crains d'avoir maintenant rencontré le premier problème que je ne suis pas capable de surmonter par moi-même.Android Spinners, changement d'adaptateurs
Autrement dit, tout ce que je veux faire est d'avoir 2 Spinners: 1 pour la sélection des pays 1 pour la province/sélection de l'état
Ce que je veux accomplir est que lorsque l'utilisateur choisit son/son pays la province/state Spinner est mis à jour avec l'adaptateur correct. Actuellement, je n'utilise que 2 pays à des fins de test. Lorsque je lance l'activité, une exception se produit et mon application tombe en panne.
Voici mon code, tous les pointeurs seraient appréciés!
public class ManageAccountActivity extends Activity {
final ArrayAdapter<CharSequence> adapterSexe = ArrayAdapter.createFromResource(ManageAccountActivity.this, R.array.sex_array_fr, android.R.layout.simple_spinner_item);
final ArrayAdapter<CharSequence> adapterProvince = ArrayAdapter.createFromResource(ManageAccountActivity.this, R.array.province_array_fr, android.R.layout.simple_spinner_item);
final ArrayAdapter<CharSequence> adapterStates = ArrayAdapter.createFromResource(ManageAccountActivity.this, R.array.state_array_fr, android.R.layout.simple_spinner_item);
final ArrayAdapter<CharSequence> adapterCountry = ArrayAdapter.createFromResource(ManageAccountActivity.this, R.array.country_array_fr, android.R.layout.simple_spinner_item);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.account_management);
Spinner spinSexe = (Spinner) findViewById(R.id.spin_sex);
Spinner spinProvince = (Spinner) findViewById(R.id.spin_province);
Spinner spinCountry = (Spinner) findViewById(R.id.spin_country);
adapterSexe.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapterProvince.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapterStates.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapterCountry.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinSexe.setAdapter(adapterSexe);
spinProvince.setAdapter(adapterProvince);
spinCountry.setAdapter(adapterCountry);
spinCountry.setOnItemSelectedListener(new CountryOnItemSelectedListener());
}
public class CountryOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
setContentView(R.layout.account_management);
Spinner spinProvince = (Spinner) view.findViewById(R.id.spin_province);
if (parent.getItemAtPosition(pos).toString().equals("Canada")) {
spinProvince.setAdapter(adapterProvince);
} else {
spinProvince.setAdapter(adapterStates);
}
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
}
Voici le message LogCat que je reçois.
01-10 20: 41: 01,024: E/AndroidRuntime (1275): java.lang.RuntimeException: impossible à instancier activité ComposantInfo {gggolf.android.minutegolf/gggolf.android.minutegolf.ManageAccountActivity} : java.lang.NullPointerException
Voici un lien avec des exigences similaires. http: // stackoverflow.com/questions/8078654/dynamic-multiple-spinners-state-city – kosa
Cet extrait de logcat n'explique rien d'autre que vous avez une exception NullPointerException. Vous devez regarder quelle ligne est à l'origine. À ce propos, l'utilisation de 'setContentView' dans l'écouteur ne devrait pas être nécessaire. – Squonk
Vérifiez AndroidManifest.xml. Avez-vous déclaré ManageAccountActivity à cet endroit? – Maxim