2017-01-17 78 views
-1

我试图在运行时创建的片段中添加微调器。 我一直在使用一个非常简单的代码得到一个崩溃与在片段中添加微调器

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference 

Im和我怀疑的是,我没有得到正确的上下文。 以下是我的代码片段

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.frag_devices,container,false); 

    spinner_device_settings = (Spinner) view.findViewById(R.id.spinner_device_settings); 
    spinnerItemsArray = new ArrayList<>(); 

    String dev_settings = "12,15,19,26,23"; // this is hard coded temporarily 

    String[] devsettarray = dev_settings.split(","); 

    for (String sett : devsettarray){ 
    Log.d("log", "onCreateView: " + sett); //i get the proper values here, separately. 
     spinnerItemsArray.add(sett); 
    } 

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(inflater.getContext(),android.R.layout.simple_spinner_item,spinnerItemsArray); 
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinner_device_settings.setAdapter(spinnerAdapter); // error is thrown on this line 

    return view; 
} 

这不是一个片段添加数据,并使用上下文的“空指针异常”问题,但更多。

+0

你的XML frag_devices可能没有与ID pinner_device_settings.If一个微调,这并不工作,发布您的XML frag_devices。 –

+0

它的确如此。我在Frag xml中添加了一个微调,我正在充气 – jamian

+1

请确保您在微调和Appcompat微调之间没有丢失。这些事情是一个真正的痛苦。确保在XML和代码中使用相同的类型。为了清楚起见,发布你的微调xml – Dibzmania

回答

0

添加getActivity()它将工作。

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_item,spinnerItemsArray); 

删除此行

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+0

你已经定义了适配器android.R.layout.simple_spinner_item的布局,你不需要再次添加它 –