我在特定 fragment 上遇到错误(这是选项卡式 Activity 中的三个错误之一)。错误是:
Cannot resolve constructor 'ArrayAdapter(layout.OneWayFragmen,int,java.lang.string[])'
我正在尝试在选项卡式 Activity 的一个 fragment 中包含并自动完成字段。有问题的 java 类如下:
package layout;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import com.example.alibasmaci.maral.R;
/**
* A simple {@link Fragment} subclass.
*/
public class OneWayFragment extends Fragment {
public OneWayFragment() {
// Required empty public constructor
}
public static OneWayFragment newInstance() {
OneWayFragment fragment = new OneWayFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_one_way, container, false);
String[] cities =
{"Ottawa - Carp CYRP",
"Toronto - Billy Bishop CYYZ",
"Montreal - St. Hubert CYHU"
};
AutoCompleteTextView actvDeparture;
actvDeparture = (AutoCompleteTextView) rootView.findViewById(R.id.actvDeparture);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.select_dialog_item,cities);
actvDeparture.setThreshold(1);
return rootView;
}
}
我指的错误是这一行的结果:
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.select_dialog_item,cities);
关于如何解决这个问题有什么想法吗?
谢谢
最佳答案
ArrayAdapter 的构造函数将 Context
作为第一个参数,并且您正在从 Fragment
传递 this
,这实际上意味着您正在传递此行中的 Fragment
:
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.select_dialog_item,cities);
你应该做的是传递它所附加的 Activity ,例如:
ArrayAdapter adapter = new ArrayAdapter(getActivity(),android.R.layout.select_dialog_item,cities);
一个更好的方法是将它声明为一个字段并在 onAttach
方法中初始化它,例如:
ArrayAdapter adapter;
@Override
public void onAttach(Context context) {
adapter = new ArrayAdapter(context,android.R.layout.select_dialog_item,cities);
}
编辑:您还缺少这一行:
actvDeparture.setAdapter(adapter);
关于java - 不确定如何解决 "Cannot resolve constructor"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025076/