프로그램에서 나는 여러 개의 스피너를 팽창시켜 레이아웃에 추가합니다. 각 회 전자에 대해 개인 선택을합니다. 액티비티가 평소와 같이 생성되면 모든 스피너가 자신의 선택을 얻습니다. 회전으로 인해 액티비티가 생성되면 모든 스피너에 마지막 스피너 값이 적용되고 onItemSelectedListener가 여러 번 호출됩니다. 나는 그다지 내게 논리가 아닌 것처럼 필사적이다. 여기에 코드입니다 :안드로이드를 여러 번 팽창 시키면 이상한 선택 동작이 발생합니다.
SpinnerTesterActivity.xml
public class SpinnerTesterActivity extends Activity {
public String[] array={"s0","s1","s2","s3","s4","s5","s6","s7","s8","s9"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("SPINNERTESTER", "REPAINT ACTIVITY");
LinearLayout layout=(LinearLayout)this.findViewById(R.id.parentLayout);
for (int i = 0 ; i<3; i++){
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup reminderLayout = (ViewGroup) layoutInflater.inflate(R.layout.edit_item, null);
Spinner spinner = (Spinner) reminderLayout.findViewById(R.id.spinner);
spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array));
spinner.setSelection(i);
layout.addView(reminderLayout);
}
}
main.xml에
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/parentLayout" >
</LinearLayout>
edit_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="3dip"
android:paddingTop="3dip" >
<Spinner
android:id="@+id/spinner"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" />
</LinearLayout>
감사합니다. 다른 조언에도 감사드립니다. 방금 문제를 주요 아이디어로 나눌 코드를 개발했습니다. – Anthea