簡體   English   中英

“ this”給我片段錯誤

[英]“this” gives me an error in fragment

為什么this給我一個錯誤在下面的片段?

這是我的代碼:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, spinnerArray);

嘗試這個:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            getActivity(), android.R.layout.simple_spinner_item, spinnerArray);
  • getContext()僅在API 23上添加,並且僅適用於少數設備(因為Android M仍然沒有很大的市場份額)。

  • getActivity()是在API 11上添加的,並且不建議過時。.因此,您可以使用它。

this.getContext()替換this ,或者甚至只是把getContext()替換this.getContext()

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), 
                                   android.R.layout.simple_spinner_item, spinnerArray);

原因是ArrayAdapter對象的構造函數看起來像這樣,

https://developer.android.com/reference/android/widget/ArrayAdapter.html中

 ArrayAdapter(Context context, int resource, T[] objects) 

要么

 ArrayAdapter(Context context, int resource, List<T> objects) 

之前可能發生的事情是,代碼行所在的類很可能不是Context類型; 因此,在構造ArrayAdapter時不能單獨使用this作為參數。 如果getContext()不起作用,那么建議您也嘗試嘗試getActivity()getApplicationContext()

使用getActivity()返回與片段關聯的活動的上下文。

所以你的代碼變成

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, spinnerArray);`]

您可以嘗試getActivity().getApplicationContext()而不是僅僅使用this在片段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM