0

我正在实施 Spinner,我的问题是当我启动应用程序时它显示 toast,它显示第一个元素。那时我没有从 spinner 中选择项目。

我喜欢这个。它在应用程序启动时第一次显示马来西亚。

在字符串.xml

 <string name="country_prompt">choose country</string>

    <string-array name="country_arrays">
        <item>Malaysia</item>
        <item>United States</item>
        <item>Indonesia</item>
        <item>France</item>
        <item>Italy</item>
        <item>Singapore</item>
        <item>New Zealand</item>
        <item>India</item>
    </string-array>


<Spinner
        android:id="@+id/spinner1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" 
        android:entries="@array/country_arrays"
        android:prompt="@string/country_prompt"

        />

在java文件上

setContentView(R.layout.firstactivity);
    sp= (Spinner) findViewById(R.id.spinner1);
    sp.setOnItemSelectedListener(this)

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        // TODO Auto-generated method stub

        Toast.makeText(parent.getContext(), 
                "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

;
4

1 回答 1

0

据我了解,您不希望在Toast第一次Activity运行时显示 。即使用户实际上没有选择任何内容,也会在创建onItemSelected时运行。Activity

AFAIK,没有办法避免这种情况。但是,您可以轻松地boolean在 say 中设置一个标志,onCreate()并检查该标志onItemSelected以决定是否运行代码,然后在onItemSelected.

所以像这样

  setContentView(R.layout.firstactivity);
    sp= (Spinner) findViewById(R.id.spinner1);
    sp.setOnItemSelectedListener(this);
    firstRun = true;   // declare this as a member variable (before onCreate())

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        // TODO Auto-generated method stub
        if (!firstRun)
        {
            Toast.makeText(parent.getContext(), 
                "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();
        }
        else
        {  firstRun = false;  }

    }
于 2013-10-20T02:42:32.060 回答