【问题标题】:Why didn't my toast work?为什么我的吐司不起作用?
【发布时间】:2017-05-23 19:47:47
【问题描述】:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.item_listview);

    myspinner = (Spinner)findViewById(R.id.spinnertype);
    String provider = myspinner.getSelectedItem().toString();

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    myspinner.setAdapter(adapter);

    myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            Toast.makeText(parent.getContext(), "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });

}
 }

我尝试了不同种类的吐司,但它仍然不会出现。什么地方出了错? 我查看了一些帖子,它说我不能将 onclicklistener 用于微调器

【问题讨论】:

  • parent.getContext() 不应该是Activitycontext 吗?例如,我的Activity 名称是MainActivity 所以,使用MainActivity.this 这应该是那个Activitycontext。但我想如果你使用自己的代码( parent.getContext()) 在另一个活动中,它不会显示,因为它实际上在你知道的其他地方..
  • @Mohsen ,我确实在微调器下方有一个列表视图。它是覆盖吐司还是仅仅因为我使用了 parent.getContext?
  • 好吧,正如我看到你的代码,尝试使用当前的Activity 上下文而不是parent.getContext()。然后,如果看不到Toast,则必须调试代码。另外,您能否尝试在不获取适配器项目的情况下使用简单的吐司?只是:Toast.makeText(MainActivity.this, "OnItemSelectedListener :", Toast.LENGTH_SHORT).show(); 然后告诉我你能不能看到吐司?
  • 我已经在我的回答中解释了一切,请检查答案。然后让我们知道发生了什么

标签: android android-toast


【解决方案1】:

你试试这个,可能对你有帮助

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

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

【讨论】:

  • 成功了!抱歉之前的评论。它实际上取决于我放置代码的位置。谢谢!
【解决方案2】:

尝试使用 getContext() 代替 getApplicationContext。

【讨论】:

    【解决方案3】:

    好的,让我们再次检查代码;

    就像我说的,你需要使用当前的ActivityContext

    例如,我的Activity 名字是MainActivity 所以,使用: MainActivity.this 这应该是那个Activity的上下文。但是我 想想如果你在另一个里面使用你自己的代码(parent.getContext()) 活动,它不会出现,因为它实际上在你的其他地方 知道

    另外,我猜你在这里做错了(类似的东西:ArrayAdapter.createFromResource issue

    我只是引用答案:

    查询数据,将其放入列表数组并使用以下构造函数 ArrayAdapter:

    ArrayAdapter<CharSequence> dataAdapter1 =  new ArrayAdapter(this, 
                                        android.R.layout.simple_spinner_item, yourArrayOrList);
    

    更新:这里是:

    Spinner myspinner = (Spinner)findViewById(R.id.spinnertype);
            String provider = myspinner.getSelectedItem().toString();
    
            ArrayAdapter<CharSequence> adapter =
                    new ArrayAdapter<CharSequence>(this, type_arrays, R.layout.support_simple_spinner_dropdown_item);
                    /*ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item);*/
    
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            myspinner.setAdapter(adapter);
    
            myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                    Toast.makeText(MainActivity.this, "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
    
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
    
                }
            });
    

    现在应该可以了!

    【讨论】:

    • 天哪!这是我的错。我实际上创建了一个新的 java 类。我试图将代码放在我的主要 java 列表中,它有效!谢谢
    • 好!很高兴听到这个消息。另外,您最好接受将来可能遇到相同问题的人的答案..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多