2

アクティビティで実行している 4 つのスピナーで選択された位置の int 値を取得したいと考えています。Int 値を取得したら、この値に基づいてループし、ファイルを SDCARD に書き出し、IE spinner1 項目 4 を選択して、SD カードにテキスト ファイル 1、2、3、4 を生成します。

ユーザーが各スピナーをクリックした場所の int 値を取得する方法がわかりませんが、イメージボタンが選択されたときに値を「収集」したいのですが、現在これが私のコードです。

    //used to track spinner value
public int spinner1 = 0;
public int spinner2 = 0;
public int spinner3 = 0;
public int spinner4 = 0;


        etnumber1 = (Spinner) findViewById(R.id.etnumber1);
    etnumber2 = (Spinner) findViewById(R.id.etnumber2);
        etnumber3 = (Spinner) findViewById(R.id.etnumber3);
    etnumber4 = (Spinner) findViewById(R.id.etnumber4);

         etnumber1.setOnItemSelectedListener(this);
 etnumber2.setOnItemSelectedListener(this);
 etnumber3.setOnItemSelectedListener(this);
 etnumber4.setOnItemSelectedListener(this);


 }//end of oncreate

     public void onClick(View v) {
      if (v==imagerun) {
           for (int i=1; i<spinner1; i++){
            //primary callsign
                Toast.makeText(getBaseContext(), String.valueOf(i),
                        Toast.LENGTH_SHORT).show();
                 String fileName = String.valueOf(i) +".txt";   
        File myFile = new File("/sdcard/.working/" +fileName);
        myFile.createNewFile();
        FileOutputStream fOut = new FileOutputStream(myFile, false);
        OutputStreamWriter myOutWriter = 
                                new OutputStreamWriter(fOut);
        myOutWriter.append(etpri1.getText());
        myOutWriter.append(" ");
        myOutWriter.append(String.valueOf(i));
        myOutWriter.close();
        fOut.close();
        }
        }
         catch (Exception e) {
                Toast.makeText(getBaseContext(), e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }

           }//end onclick
     public void onItemSelected(AdapterView<?> parent, View view1, int pos,
        long id) {
    // TODO Auto-generated method stub
        spinner1=etnumber1.getSelectedItemPosition(); // primary number
        spinner2=etnumber2.getSelectedItemPosition(); //secondary 
        spinner3=etnumber3.getSelectedItemPosition(); //primary number 
        spinner4=etnumber4.getSelectedItemPosition(); //secondary number
        }

私は明らかにこれを間違っています。多くのチュートリアルに従おうとしましたが、それらはすべて単一のスピナーから文字列値を取得することを参照しています。申し訳ありませんが、これはおそらく単純な要求ですが、私は一日中これに頭を悩ませてきました!

助けてくれてありがとう。

4

2 に答える 2

5

スピナーで選択されたインデックスを取得するには、次のコードを使用します (例として etnumber1 を使用)。

    int spinnerValue1 = etnumber1.getSelectedItemPosition();

他のスピナーのコードを複製するだけです。

于 2013-02-26T23:17:21.593 に答える
0

たぶんこれです

    public void onItemSelected(AdapterView<?> parent, View view1, int pos,
    long id) {
// TODO Auto-generated method stub
    switch(parent.getId()){
    case R.id.etnumber1:
    {
        spinner1 = pos;
        break;
    }
    case R.id.etnumber2:
    {
        spinner2 = pos;
        break;
    }
    case R.id.etnumber3:
    {
        spinner3 = pos;
        break;
    }
    case R.id.etnumber4:
    {
        spinner4 = pos;
        break;
    }

    }}
于 2013-02-27T00:07:06.537 に答える