我有以下代码:

public class OnboardingActivity extends BaseLoggedInActivity
    implements CountryPickerDialog.ICountryPickerDialogUsers, AdapterView.OnItemSelectedListener {
private Spinner _countryCodeSpinner;

.
.
.
    private void setupCountrySpinner() {
        List<String> sortedCountryCodeList = CountryData.getInstance().getSortedCountryCodes();
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
            R.layout.country_code_spinner_item,
            sortedCountryCodeList);
    _countryCodeSpinner.setOnItemSelectedListener(this);
    _countryCodeSpinner.setAdapter(adapter);
    _countryCodeSpinner
            .setOnTouchListener(getCountryCodeSpinnerTouchListener(_countryCodeSpinner));
    int position = getDefaultCountryNamePosition();
    if (position >= 0) {
        _countryCodeSpinner.setSelection(position);
    }
}

.
.
.
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    _logger.debug("Inside onItemSelected");
    view.setSelected(true);
}

我在上面的函数 onItemSelected 中得到了空指针异常。其返回的NULL View 。我从一个用户那里收到了此跟踪,但是我自己无法复制它。用空 View 调用onItemSelected的原因可能是什么?

谢谢

最佳答案

这可能是在配置更改后引起的,例如旋转设备。重新创建了微调器,并且在onItemSelected回调中接收到空参数。

您可以将实现中的 View 注释为@nullable,然后

if (view != null) {view.setSelected(true);}

如果您使用的是Kotlin,请尝试以下操作:
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long){
    view?.isSelected = true
}

关于android - AdapterView.OnItemSelectedListener返回NULL View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27820951/

10-10 09:32
查看更多