【问题标题】:java return value always returns nulljava返回值总是返回null
【发布时间】:2015-05-08 15:49:03
【问题描述】:

一个新手问题。我来自红宝石背景,想知道如何解决这个问题。

每当我尝试返回在函数中初始化的值时,它都会打印nullnothing。谁能告诉我如何返回值?

这是我尝试过的。

firstFunction(){
    String id = setSpinner();
}


    public String setSpinner(){
            ArrayAdapter<String> adapter;
            final String[] id = new String[1];
            adapter = new ArrayAdapter<String>(user_activity.this,android.R.layout.simple_dropdown_item_1line,brand_list);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    id[0] = _ids.get(i);
    //Toast.makeText(getBaseContext(), id[0] + ":" + spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); // Prints correct value
                }

                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {

                }
            });
            Toast.makeText(getBaseContext(), id[0].toString() , Toast.LENGTH_SHORT).show(); // Always prints null
            return id[0]; // returns empty string
        }

【问题讨论】:

  • 什么是_ids。是否正确填充?
  • 您似乎无法为`id[0]`分配任何值,因此它总是返回null。可以调试一次代码吗?
  • return .... 尝试打印 id[0] 的值
  • @Knosso _ids 是一些元素的数组。
  • @SparshKhandelwal 我可以打印setOnItemSelectedListener 内的值。但不在函数之外。

标签: java android scope


【解决方案1】:

您对何时执行代码感到困惑。

id[0] 只会在选择微调器项目时分配。您在这里所做的只是设置微调器,但此时没有用户交互。因此,您无法收到结果,因为未选择任何结果。

如果你想返回第一个值,你可以在OnItemSelectedListener之外这样做,就像这样:

return adapter.getItem(0);

无论如何,Listener 中的代码基本上是没有意义的。

【讨论】:

  • setOnItemSelectedListener 我用brand_list 数组填充微调器元素。我正在尝试从_ids 数组中获取id 位置i。并希望将其返回给其他功能。]
  • 同意@323go id[0] 将在您选择项目时获得价值。
  • @SparshKhandelwal @323go 已经使用android.R.layout.simple_dropdown_item_1linebrand_list 将值填充到微调器元素。当用户从微调器项目中选择一些元素时,我试图根据位置i_ids 数组中获取“值”i
  • 为答案添加了一些帮助。您可能想阅读documentation,因为您似乎仍然不清楚这一切是如何结合在一起的。
猜你喜欢
  • 2020-04-09
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2014-03-04
  • 2016-11-02
  • 2014-05-06
相关资源
最近更新 更多