Spinner.getselecteditem.tostring中的空对象引用

时间:2017-07-18 06:25:09

标签: android android-spinner

我试图在我的OnClick中获取Spinner的值时得到一个空对象引用,这就是我设置Spinner值的方法

DatabaseReference db1 = firebaseDatabase.getReference("USERS/"+getArguments().getString("Usr"));
db1.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.child("uList").getValue().toString() != null && tem)
        {
            String temp1 = dataSnapshot.child("uList").getValue().toString();
            String [] m =temp1.split(",");
            for(j=0;j<=m.length-1;j++){
                if(m[j] !=null && m[j] != "") {
                    UsrList.add(m[j]);
                }
            }
        }
        else
        {
            if(!tem)
            {                              
                UsrList1.add("Not Applicable");
            }
            else
            {                               
                UsrList1.add("No Users have been added yet");
            }
        }
        usrAdapter1 = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, UsrList1);
        ul.setAdapter(usrAdapter1);
    }
}

Spinner,arralist,arrayadapter已在Activity中定义,但在我的OnClick中我无法获得微调器的值,它表示空对象引用。

@Override
public void onClick(View v) {
    String tString,yString;
    boolean temp;
    Bundle bundle = new Bundle();
    switch(v.getId()) {          
        case R.id.btnN:                
            showToast(ul.getSelectedItem().toString());

我能够在UI上看到微调器数据,它只是在选择我没有得到字符串时。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  

NullPointerException:尝试调用虚方法&#39; java.lang.String java.lang.Object.toString()&#39;在&#34; showToast&#34;

的空对象引用上

来自documentation

  

与当前所选项目对应的数据,如果没有选择任何内容,则为null。

单击按钮时,没有选择任何内容。所以它在getSelectedItem()中返回null。在null上调用toString()并导致空指针引用。

答案 1 :(得分:0)

如果你想从spinner获取值,也许你可以尝试setOnItemSelectedListener而不是onClick。

ul.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view,
                                   int position, long id) {

        String item = String.valueOf(parent.getItemAtPosition(position));

        }

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

        }
    });