【问题标题】:Android: spinner works in Activity but not FragmentAndroid:微调器适用于 Activity 但不适用于 Fragment
【发布时间】:2013-12-09 09:10:32
【问题描述】:

所以我可以让Spinner 在单个Activity 中工作,但是当我将代码转移到片段时,它显然不起作用。

这两行出现错误:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.category_array, android.R.layout.simple_spinner_item);
ArrayAdapter<String> adapterItem = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, suggestedItems);

我知道上下文 this 需要更改。我已经尝试过使用getActivity(),但效果不佳。

需要一些见解!谢谢!

public class NominateFragment extends Fragment {

@Override  
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  

    View view = inflater.inflate(R.layout.fragment_nominate_page, container, false);

    //SPINNER
    Spinner spinner = (Spinner)getView().findViewById(R.id.category);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.category_array, android.R.layout.simple_spinner_item); // Create an ArrayAdapter using the string array and a default spinner layout
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Specify the layout to use when the list of choices appears
    spinner.setAdapter(adapter);    // Apply the adapter to the spinner

    //AUTOCOMPLETE
    AutoCompleteTextView nominateItem = (AutoCompleteTextView)getView().findViewById(R.id.autocomplete_nominate_item); // Get a reference to the AutoCompleteTextView in the layout
    String[] suggestedItems = getResources().getStringArray(R.array.suggested_items_array); // Get the string array
    ArrayAdapter<String> adapterItem = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, suggestedItems);     // Create the adapter and set it to the AutoCompleteTextView 
    nominateItem.setAdapter(adapterItem);

    return view;
}

}

【问题讨论】:

  • 如果它崩溃了,发布你的 logcat。

标签: android spinner fragment


【解决方案1】:

替换这一行:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.category_array, android.R.layout.simple_spinner_item);

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.category_array, android.R.layout.simple_spinner_item);

还有这一行:

Spinner spinner = (Spinner)getView().findViewById(R.id.category);

与:

Spinner spinner = (Spinner)view.findViewById(R.id.category);

和:

AutoCompleteTextView nominateItem = (AutoCompleteTextView)getView().findViewById(R.id.autocomplete_nominate_item); // Get a reference to the AutoCompleteTextView in the layout

与:

AutoCompleteTextView nominateItem = (AutoCompleteTextView)view.findViewById(R.id.autocomplete_nominate_item); // Get a reference to the AutoCompleteTextView in the layout

【讨论】:

  • 然后把logcat的输出放在这里
  • 效果很好。实际上,我几乎在你做 lol 的同时想出了使用 view.findViewById,但无论如何我都会接受你的回答 =] 谢谢你的帮助。
  • 不客气,无论如何,getView() 不起作用,因为你还在创建它,在存在此方法之后,getView() 应该起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
相关资源
最近更新 更多