0

Spinner2 で Spinner1 の可視性を変更しようとしています。コードは正常にコンパイルされますが、開くとアプリがクラッシュします。

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Spinner spinner = (Spinner)findViewById(R.id.spinner2);

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {

        public void onNothingSelected(AdapterView<?> arg0) {

        }

        public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
            Spinner spinner = (Spinner)findViewById(R.id.spinner2);
            Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
            TextView textview1 = (TextView)findViewById(R.id.textView1);

            if (spinner.getSelectedItemPosition() == 1) {
                textview1.setVisibility(View.VISIBLE);
                spinner1.setVisibility(View.VISIBLE);
            }
        }
    });
}
4

2 に答える 2

0

わかりましたので、選択した項目をチェックするクラスを使用して最初のアプリのクラッシュを修正しました

メインコード:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Spinner spinner = (Spinner)findViewById(R.id.spinner2);
    spinner.setOnItemSelectedListener(new checkSelectedItem());
}

私のクラス:

public class checkSelectedItem implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    Spinner spinner1 = (Spinner)parent.findViewById(R.id.spinner1);
    TextView textview1 = (TextView)parent.findViewById(R.id.textView1);
    if (pos == 1) {
        textview1.setVisibility(View.VISIBLE);
        spinner1.setVisibility(View.VISIBLE);
    }
    else {
        if ( textview1.getVisibility() == View.VISIBLE) {
            textview1.setVisibility(View.INVISIBLE);
        }
        if ( spinner1.getVisibility() == View.VISIBLE) {
            spinner1.setVisibility(View.INVISIBLE);
        }
    }
}

public void onNothingSelected(AdapterView parent) {

}

したがって、最初のクラッシュは修正されましたが、spinner2 でオプション 1 を選択すると、アプリがクラッシュします。

于 2012-11-15T00:04:11.660 に答える
0

イベント中は ID を設定しないでください。それは単に良くありません。このようにします:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Spinner spinner = (Spinner)findViewById(R.id.spinner2);
    Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
    TextView textview1 = (TextView)findViewById(R.id.textView1);


    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {

        public void onNothingSelected(AdapterView<?> arg0) {

        }

        public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
            if (spinner.getSelectedItemPosition() == 1) {
                textview1.setVisibility(View.VISIBLE);
                spinner1.setVisibility(View.VISIBLE);
            }
        }
    });}
于 2012-11-14T07:02:04.990 に答える