在Fragment中指定AutoCompleteTextView的适配器

3
几乎可以运行了。 所以我有一个静态的PlaceholderFragment,看起来像这样:
public static class PlaceholderFragment extends Fragment {
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {

    }

    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

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

        // Get a reference to the AutoCompleteTextView in the layout
        AutoCompleteTextView textView = (AutoCompleteTextView) rootView.findViewById(R.id.customer);
        String[] customers = getResources().getStringArray(R.array.al_customers);
        ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, customers);
        textView.setAdapter(adapter);

        return rootView;
    }
}

我的问题在于这一行:

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

我遇到的错误如下:

Cannot resolve constructor 'ArraAdapter(com.g.h.MainActivity.PlaceholderFragment,int,java.lang.String[])'

我曾试图在“this”前面添加一个类:

MainActivity.this

当您执行 MainActivity.this 时会发生什么? - Code-Apprentice
2
使用getActivity()替换此内容 - Inducesmile
getActivity制造了魔法。真棒! - codemoonger
2个回答

2
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) view.findViewById(R.id.autocomplete_type_pres);
autoCompleteTextView.setAdapter(new ArrayAdapter<String>( getActivity(),android.R.layout.simple_dropdown_item_1line, mylist));

1

Nolly J在评论中提供的答案:

"使用getActivity()替换this"

这简直像魔法一样奏效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接