1

なぜこれが機能しないのですか?!

if(itemx == "Test number item 0")
    {
    Log.i("Dropdown", "inside if");
    us_lo_ans_hold.setText("0x");
    }; 

itemxが文字列であり、文字列が「テスト番号項目0」の場合。

私は最初のスピナーを作成しています。

アクティビティのonCreateブロック内のスピナーコードは次のとおりです。

    Spinner us_lo_spinner = (Spinner) findViewById(R.id.ul_ans_spinner); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.test_defaults , android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    us_lo_spinner.setAdapter(adapter); 

 // Spinner click listener 
us_lo_spinner.setOnItemSelectedListener(this);

これがstrings.xmlのString配列です。

<string name="spin_title_ulover_ans">Spinner default:</string> 
<string-array name="test_defaults"> 
    <item>Test number item 0</item>
    <item>Test number item 1</item> 
    <item>Test number item 2</item> 
    <item>Test number item 3</item> 
    <item>Test number item 4</item> 
</string-array>

onItemSelectedは次のとおりです。

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
{
    Log.i("XXX_Dropdown", "XXXX");
    TextView us_lo_ans_hold = (TextView)findViewById(R.id.us_lo_ans_holdtest);
    // On selecting a spinner item 
    String itemx = arg0.getSelectedItem().toString();
    us_lo_ans_hold.setText("oppp12");
    Log.i("Dropdown", "item: " + itemx);
    Log.i("Dropdown", "arg1: " + arg1);
    Log.i("Dropdown", "arg2: " + arg2);
    Log.i("Dropdown", "arg3: " + arg3);
    // Showing selected spinner item 
    if(itemx == "Test number item 0")
        {
        Log.i("Dropdown", "inside if");
        us_lo_ans_hold.setText("0x");
        }; 

}

私が入れたすべてのLog.i(、)から、itemxが正しいことがわかります。スピナー内のアイテムが選択されると、正しい文字列になります。それでもIFは機能しません。

IFをこれに変更した場合:

if(arg2 == 0)
    {
    Log.i("Dropdown", "inside if");
    us_lo_ans_hold.setText("0x");
    }; 

それが動作します; しかし、それは私が望むものではありません!

だから...なぜこれが機能しないのですか?!:

if(itemx == "Test number item 0")
    {
    Log.i("Dropdown", "inside if");
    us_lo_ans_hold.setText("0x");
    }; 

itemxが文字列であり、文字列が「テスト番号項目0」の場合。?


また、「onNothingSelected」はいつどのように呼び出されますか?戻るボタンを押すと?すでに選択されている項目を選択すると?私の「onNothingSelected」は決して呼び出されません!

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    Log.i("Dropdown", "in NOTHING SELECTED");
    TextView us_lo_ans_hold = (TextView)findViewById(R.id.us_lo_ans_holdtest);
    us_lo_ans_hold.setText("nothing selected");
}

次のようなアクティビティのonCreateブロックを入れてみました:

    // Spinner click listener 
    us_lo_spinner.setOnItemSelectedListener(this);

us_lo_spinner.onNothingSelected(this)   

しかし、〜compiler〜はそのようにします。

それで...「onNothingSelected」はいつどのように呼び出され、どのようにスピナーに接続されますか?

4

2 に答える 2

4

あなたitemxが変数の場合、2 つの文字列を と比較することはできません==。代わりに使用items.equals("Test number item 0");

==オブジェクトを比較equals()し、文字列値を比較します。この投稿を見てください。

于 2012-10-21T18:42:05.253 に答える
2

文字列を == と比較しないでください。等号を使用してください。

if(itemx.equals("Test item 0")){...

onNothingSelected に関しては、ドキュメントには、たとえば、選択した項目をアダプターから削除した場合に呼び出されると記載されています。

于 2012-10-21T18:43:21.823 に答える