ArrayAdapter
문자열 배열을 사용하여 초기화하고 counties
싶지만 앱을 실행할 때 오류 메시지가 나타납니다. 내 코드는 다음과 같습니다.
class EnglandFragment : Fragment() {
// Access a Cloud Firestore instance from your Activity
val db = FirebaseFirestore.getInstance()
lateinit var adapter : ArrayAdapter<String>
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_england, container, false)
var mContext: Context? = null
mContext = getActivity() as CountriesActivity
mContext.initializeCustomActionBar(R.drawable.england_flag, R.string.title_counties)
var counties : Array<String>
val docRef = db.collection("UKSites").document("England")
docRef.get()
.addOnSuccessListener { document ->
if (document != null) {
counties = document.get("Counties") as Array<String>
adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, counties)
} else {
Log.d("Debug", "No such document")
}
}
.addOnFailureListener { exception ->
Log.d("Debug", "get failed with ", exception)
}
return root
}
}
다음과 같은 오류 메시지가 나타납니다.
None of the following functions can be called with the arguments supplied:
public constructor ArrayAdapter<T : Any!>(@NonNull p0: Context, p1: Int, @NonNull p2: Array<(out) String!>) defined in android.widget.ArrayAdapter
public constructor ArrayAdapter<T : Any!>(@NonNull p0: Context, p1: Int, p2: Int) defined in android.widget.ArrayAdapter
public constructor ArrayAdapter<T : Any!>(@NonNull p0: Context, p1: Int, @NonNull p2: (Mutable)List<String!>) defined in android.widget.ArrayAdapter
당신이 사용하는 경우 코드가 올바른 PARAMS를 제공하지 않는 것 같다 androidx.fragment.app.Fragment
당신은 단순히 호출 할 수 있습니다 requireContext()
및requireActivity()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_england, container, false)
(requireActivity() as CountriesActivity).initializeCustomActionBar(R.drawable.england_flag, R.string.title_counties)
val docRef = db.collection("UKSites").document("England")
docRef.get()
.addOnSuccessListener { document ->
if (document != null) {
val counties = document.get("Counties") as Array<String>
adapter = ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, counties)
} else {
Log.d("Debug", "No such document")
}
}
.addOnFailureListener { exception ->
Log.d("Debug", "get failed with ", exception)
}
return root
}
참고로 이것은 Fragment
-> 에서 메서드를 캐스트 및 / 또는 호출하는 것은 매우 나쁜 습관입니다.Activity
(requireActivity() as CountriesActivity).initializeCustomActionBar(R.drawable.england_flag, R.string.title_counties)
당신도해야 initializeCustomActionBar
활동이나이 조각은 다음 (생성자 통과)를 호출 할 수있는 인터페이스를 구현합니다.
그러나 나는 그것이 당신의 질문 범위를 벗어 났기 때문에 너무 걱정하지 않을 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다