29

母语为英语的人,所以我想对你们说对不起我糟糕的英语技能。

我从 5 周前开始研究 Android。我试图实现一个微调器,我的导师问为什么需要 onNothingSelected 方法。我无话可说。

那么,为什么我需要这种方法?你能回复一下吗?

以下代码是我的微调器。它正确地完成了我的意图。

 public class SpinnerViewPractice extends Activity {
    private Spinner spinner;
    private String spinner_value = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.spinnerviewpractice);

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

        String[] str = {"","good", "dislike", "like", "hate", "moderate"};
        spinner.setPrompt("Set Text");
        ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, str); 
        spinner.setAdapter(list);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                TextView tv = (TextView)arg1;
                spinner_value = tv.getText().toString();
                if(spinner_value.length() == 0)
                {
                    spinner_value = "Nothing";                  
                }
                Toast.makeText(SpinnerViewPractice.this, spinner_value, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                Toast.makeText(SpinnerViewPractice.this, "NothingSelected", Toast.LENGTH_SHORT).show();
            }           
        });
    }
}
4

2 回答 2

15

如文档所述:

Callback method to be invoked when the selection disappears from this view. 例如,当触摸被激活或适配器变空时,选择可能会消失。

这意味着只要从可用项目列表中删除当前选定的项目,就会调用该方法。正如文档所描述的,这可能在不同的情况下发生,但通常如果修改适配器以使当前选定的项目不再可用,则将调用该方法。

可以使用此方法,以便您可以设置在前一个项目不再可用的情况下将选择哪个项目。这不是让微调器自动选择列表中的下一项。

于 2013-11-12T21:13:18.827 回答
6

这里的文档。

onNothingSelected is a Callback method to be invoked when the selection disappears from this view. 例如,当触摸被激活或适配器变空时,选择可能会消失。

我认为它几乎回答了你的问题。因此,如果您的微调器因选择项目以外的其他原因而消失,onNothingSelected则将被调用。所以正如它的名字所说,需要找出什么时候没有选择

于 2013-05-08T15:53:10.893 回答