我正在实现Spinner,我的问题是它在我启动应用程序时显示toast它显示第一个元素。那时我没有从spinner中选择项目。
我喜欢这个。它在应用程序发布时首次显示马来西亚。
在string.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
}
;
答案 0 :(得分:0)
根据我的理解,您不希望Toast
第一次运行时显示Activity
。即使用户实际上没有选择任何内容,也会在创建onItemSelected
时运行Activity
。
AFAIK,没有办法避免这种情况。但是,您可以轻松地在boolean
中设置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; }
}