java - 不确定如何解决 "Cannot resolve constructor"错误

标签 java android android-studio

我在特定 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/

相关文章:

android - 为什么 Android Studio 没有构建和部署正确的 apk

android - 找不到 Gradle DSL 方法 : 'android()' opening project in android studio 1. 4

java - 如何使用java拍摄多个应用程序的屏幕截图,即多个https URL?

java - 在 Java 中初始化不稳定的字符

java - 为什么 EJB 无状态 session bean 不能实现 SessionSynchronization?

java - Android 线程 ID 检查

android - 如何确定 Android Studio 是否实际使用了英特尔 HAXM 加速器?

java - 如何打开 Lucene 4.3 索引?

Android facebook sdk 内部实用程序 java.lang.AssertionError

java - 接收对 HttpsURLConnection GET 请求的编码响应