【问题标题】:"NullPointerException" is showing when trying to get selected spinner item during a buttin OnClickListener在按钮 OnClickListener 期间尝试获取选定的微调器项目时显示“NullPointerException”
【发布时间】:2018-03-27 17:01:55
【问题描述】:

我已经为微调器制作了一个自定义适配器列表。当我从微调器中选择一个项目时,我可以获取所选项目并可以在“setOnItemSelectedListener()”中对其进行 Toast;

spinner = findViewById(R.id.spinnerId);
CustomAdapter arrayAdapter = new CustomAdapter(this, countryLists, population, flags);
spinner.setAdapter(arrayAdapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(isSelected == true){
                isSelected = false;
            }
            else {                   
                Toast.makeText(getApplicationContext(),countryLists[position]+" is selected", Toast.LENGTH_SHORT).show();
            }
        }

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

        }
    });

以上代码运行良好。

现在我想从按钮“OnClickListener”传递选定的项目值,如下面的代码。

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String value = spinner.getSelectedItem().toString();
            textView.setText(value );
        }
    });

但错误显示“java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on an null object reference”

可能是什么问题??

【问题讨论】:

标签: java android spinner


【解决方案1】:

问题是您可能没有选择项目。因此,只需在使用前检查 null:

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(spinner.getSelectedItem() != null) {
                String value = spinner.getSelectedItem().toString();
                textView.setText(value );
            }
        }
    });

【讨论】:

  • 选择项目时,请尝试调用 spinner.setSelection(id)
【解决方案2】:

尝试像这样构造:

String global_variable; //this would go on the Declaration



spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            global_variable = String.valueOf(spinner.getSelectedItem()
        }


button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String value = spinner.getSelectedItem().toString();
        textView.setText(global_variable);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2011-08-12
    • 2018-08-15
    • 2014-03-02
    相关资源
    最近更新 更多