2017-01-17 107 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的佈局,你不需要再次添加它 –