Toast.makeText在setOnItemSelectedListener中导致错误

时间:2013-05-16 08:15:30

标签: android

以下代码可以正常运行,但是当我使用Toast.makeText(this,((TextView) view).getText().toString(), 2000).show();时会发生错误我不知道为什么。我尝试使用Toast.makeText(this.parent,((TextView) view).getText().toString(), 2000).show();,这也会导致错误。

private void InitControl() {
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item,
            nameList.toArray(new String[nameList.size()]));
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerFolder.setAdapter(adapter1);

    spinnerFolder.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            Toast.makeText(MainActivity.this,
                    ((TextView) view).getText().toString(), 2000).show();

        }

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

        }
});

5 个答案:

答案 0 :(得分:0)

尝试使用,

Toast.makeText(getApplicationContext(),parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

因为您在无效的上下文中运行它,MainActicity.this无法显示吐司。

在侦听器之外定义上下文,如

final Context context = this; //'this' should be your activity

并且在侦听器内部调用像

这样的toast
 Toast.makeText(context,
                    ((TextView) view).getText().toString(), 2000).show();

另外,最合适的方法是定义自己的类来实现OnItemClickListener,定义一个Context成员变量并在构造函数中设置它。

答案 2 :(得分:0)

请尝试以下操作:

public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
Toast.makeText(getApplicationContext(), lv.getAdapter().getItem(pos).toString(),  2000).show();

快乐编码

答案 3 :(得分:0)

替换

(TextView) view).getText().toString()

通过

spinnerFolder.getSelectedItem().toString()

答案 4 :(得分:0)

Toast持续时间不是您放置的值,以秒或毫秒为单位,它是您必须设置的标志,您必须放置LENGTH_SHORTLENGTH_LONG。这是标志,如果你需要更长的持续时间然后是length_long,你将不得不使用notifications