J'essaie d'obtenir la position (numéro) du compteur lorsqu'il est sélectionné pour l'utiliser dans une autre activité qui affichera une carte différente chaque fois en fonction de l'élément sélectionné. quand je lance l'application, il se bloque. c'est le premier code d'activité:
public class TestProjectActivity extends Activity {
public Spinner spinner1;
public Integer number;
private Button valideButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySpinner();
valide_button();
}
public void MySpinner() {
final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.num, Android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id) {
// Object item = parentView.getItemAtPosition(position);
TestProjectActivity.this.number = spinner1
.getSelectedItemPosition() + 1;
}
public void onNothingSelected(AdapterView<?> arg0) {// do nothing
}
});
}
public void valide_button() {
valideButton = (Button) findViewById(R.id.valide_button);
valideButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(TestProjectActivity.this,
MetroMapActivity.class);
startActivity(intent);
}
});
}
}
Le moyen d'obtenir la sélection de la roulette est:
spinner1.getSelectedItemPosition();
Référence de la documentation: http://developer.Android.com/reference/Android/widget/AdapterView.html#getSelectedItemPosition ()
Cependant, dans votre code, le seul endroit auquel vous faites référence se trouve dans votre setOnItemSelectedListener()
. Il n'est pas nécessaire d'interroger le compteur, car la méthode onItemSelected
reçoit la position en tant que variable "position".
Donc, vous pouvez changer cette ligne en:
TestProjectActivity.this.number = position + 1;
Si cela ne résout pas le problème, signalez le message d'erreur généré lorsque votre application se bloque.
if (position ==0) {
if (rYes.isChecked()) {
Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show();
} else if (rNo.isChecked()) {
Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show();
}
}
Ce code est censé cocher les deux cases.
Y at-il un problème avec cela?
final int[] positions=new int[2];
Spinner sp=findViewByID(R.id.spinner);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText( arg2....);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});