J'ai un programme simple où je définis un spinner à une position. J'appelle alors un deuxième module et quand je reviens, je réinitialise le spinner. L'affichage du spinner n'affiche pas la valeur du spinner. Lorsque vous appuyez sur le curseur, il pointe vers la valeur correcte, mais il affiche une valeur incorrecte. En fait, il démissionne.Spinner affiche une valeur erronée
J'ai écrit le programme simple suivant pour démontrer. Cela se produit uniquement lorsque le formulaire a un spinner dans une Linearlayout ou TableLayout avec au moins 1 autre élément.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent" android:layout_height="200dp"
android:text="Main Form" />
<LinearLayout android:id="@+id/widget43"
android:layout_width="320dp" android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn" android:text="Button" android:textSize="16sp"
android:layout_width="160dp" android:layout_height="40dp" />
<Spinner
android:id="@+id/btnFour" android:textSize="16sp"
android:layout_width="160dp" android:layout_height="40dp" />
</LinearLayout>
</LinearLayout>
next.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/id1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Next"
/>
</LinearLayout>
main.java
package tt.zzz;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class main extends Activity {
@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
fillSpinner();
Button btnGo = (Button) findViewById(R.id.btn);
btnGo.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) { Go(); } });
}
void Go() {
Intent i = new Intent(this, next.class);
startActivityForResult(i, 0);
}
public void fillSpinner(){
Spinner spin_test = (Spinner) findViewById(R.id.btnFour);
ArrayAdapter<CharSequence> myAdapter =
new ArrayAdapter<CharSequence>(
this,
android.R.layout.simple_spinner_item
);
myAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
myAdapter.add("Option 1");
myAdapter.add("Option 2");
myAdapter.add("Option 3");
spin_test.setAdapter(myAdapter);
spin_test.setSelection(1);
spin_test.setOnItemSelectedListener(
new Spinner.OnItemSelectedListener(){
public void onItemSelected(AdapterView<?>
arg0,View arg1,int arg2,long arg3){
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillSpinner();
}
}
next.java
package tt.zzz;
import android.app.Activity;
import android.os.Bundle;
public class next extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next);
}
}
Ok, j'ai essayé cela et il n'a eu aucun impact du tout. La valeur de spinner affichée diminue à chaque cycle, et la valeur affichée indique toujours la valeur correcte, contrairement au spinner effondré. – miannelle