Всякий раз, когда я пытаюсь реализовать ArrayAdapter в моем ListView в моем файле MainActivity.kt, мое приложение вылетает. После того как я закомментировал это, мое приложение может работать, но, конечно, оно не отображает список имен, которые мне нужны.
Это не вызывало у меня проблемы раньше, и даже поиск в Googleне дал мне особого понимания проблемы, с которой я сталкиваюсь. Я не уверен, может ли это быть вызвано тем, что я использую Фрагменты так же как Действия. Если у кого-то есть какие-либо идеи, мы будем очень признательны
main.kt:
package com.example.contactslist
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
/**
* A simple [Fragment] subclass.
*/
class main : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_main, container, false)
}
}
MainActivity.kt:
package com.example.contactslist
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.ListView
class MainActivity : AppCompatActivity() {
var CONTACT_DETAIL_ACTIVITY_REQUEST = 0
val names = ArrayList<String>()
val numbers = ArrayList<Int>()
// Variable to hold relationships
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
names.add("Baraka")
names.add("Blandy")
numbers.add(732)
numbers.add(666)
val contactsAdapter = ArrayAdapter(this, R.layout.activity_listview, names)
val listView1 = findViewById<ListView>(R.id.contact_list)
listView1.setAdapter(contactsAdapter)
val add_new_contact = findViewById<Button>(R.id.add_contacts)
add_new_contact.setOnClickListener {
val name = ""
val phone_number = 1
val relationship = ArrayList<String>()
val intent1 = Intent(this,ContactDetails::class.java)
startActivityForResult(intent1, CONTACT_DETAIL_ACTIVITY_REQUEST)
}
}
}
фрагмент_основной.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".main">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Contacts"
android:textSize="30sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
>
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ListView
android:id="@+id/contact_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</ListView>
</LinearLayout>
<Button
android:id="@+id/delete_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:text="Delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
>
</Button>
<Button
android:id="@+id/add_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:text="Add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
>
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<fragment
android:id="@+id/fragment"
android:name="com.example.contactslist.main"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
activity_listview.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contact_list"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<!-- <CheckBox-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:id="@+id/checked"-->
<!-- android:checked="false"/>-->
<TextView
android:id="@+id/contact_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp"/>
</LinearLayout>
РЕДАКТИРОВАТЬ: Вот журнал ошибок LogCat -
10-0921: 19: 25,953 21333-21333 /? I / art: Не поздно - включение -Xcheck: jni (уже включено) 10-09 21: 19: 26.167 21333-21339 /? E / art: Не удалось отправить ответ отладчику: Broken pipe 10-09 21: 19: 26.168 21333-21339 /? I / art: отладчик больше не активен 10-09 21: 19: 26.736 21333-21333 /? W / System: ClassLoader ссылается на неизвестный путь: /data/app/com.example.contactslist-1/lib/x86 10-09 21: 19: 27.245 21333-21333 / com.example.contactslist W / art: До Android 4.1,methodandroid.graphics.drawable.Drawable 10-09 21: 19: 27.618 21333-21333 / com.example.contactslist I / art: Отказ от повторной инициализации ранее неудачного класса java.lang.Class 10-09 21: 19: 27.61821333-21333 / com.example.contactslist I / art: Отклонение повторной инициализации для ранее неудачного класса java.lang.Class 10-09 21: 19: 27.725 21333-21333 / com.example.contactslist W / art: Проверкаvoid androidx.core.view.ViewCompat.dispatchFinishTevenDetach (android.view.View) занял 103,153ms 10-09 21: 19: 27.972 21333-21343 / com.example.contactslist I / art: Bчастичная одновременная очистка меток GC освободил 2073 (241 КБ) объектов AllocSpace, 0 (0B) объектов LOS, 52% свободных, 925 КБ / 1949 КБ, приостановлено 1.940 мс всего 150.819 мс 10-09 21: 19: 28.074 21333-21370 / com.example.contactslist D / OpenGLRenderer: Использовать EGL_SWAP_BEHAVIOR_PRESERVED: true 10-09 21: 19: 28.268 21333-21333 / com.example.contactslist E / ArrayAdapter: Вы должны предоставить идентификатор ресурса для TextView 10-09 21: 19: 28.269 21333-21333 / com.example.contactslist D / AndroidRuntime: завершение работы VM 10-09 21: 19: 28.271 21333-21333 / com.example.contactslist E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.contactslist, PID: 21333java.lang.IllegalStateException: ArrayAdapter требует, чтобы ID ресурса был TextView на android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:393) на android.widget.ArrayAdapter.getView (ArrayAdapter.java:36id) и на. AbsListView.obtainView (AbsListView.java:2346) в android.widget.ListView.measureHeightOfChildren (ListView.java:1280) в android.widget.ListView.onMeasure (ListView.java:1188) на android.view.View.measure (View.java:18788) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) на android.widget.LinearLayout.measureChildBeforeLayout (.java: 1465) на android.widget.LinearLayout.measureVertical (LinearLayout.java:748) на android.widget.LinearLayout.onMeasure (LinearLayout.java:630) на android.view.View.measure (View.java:18788)atroidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren (ConstraintLayout.java:1227)android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) в android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465)на android.widget.LinearLayout.measureVertical (LinearLayout.java:748) на android.widget.LinearLayout.onMeasure (LinearLayout.java:630) на android.view.View.measure (View.java:18788) на android.view. ViewGroup.measureChildWithMargins (ViewGroup.java:5951) в android.widget.FrameLayout.onMeasure (FrameLayout.java:194) в androidx.appcompat.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.j.View.roid.roid. and.av. (View.java:18788) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) на android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) на android.widget.LinearLaytical.me. Line.Layj.me. 748) на android.widget.LinearLayout.onMeasure (LinearLayout.java:630) на android.view.View.measure (View.java:18788) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) на андроиде. widget.FrameLayout.onMeasure (FrameLayout.java:194) в android.view.View.measure (View.java:18788) в android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) в android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) в android.widget.LinearLayout.measureVertical (LinearLayout.java:748) в android.widout.Layout.Layay.Layay.Laye.May: 630) в android.view.View.measure (View.java:18788) в android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) в android.widget.FrameLayout.onMeasure (FrameLayout.java:194) в com.android.internal.policy.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2643) в android.view.View.measure (View.java:18788) в android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2100) вandroid.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1216) в android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1452) в android.view.ViewRootImpl.doTraversal (ViewRootroid.mpl.View.View.View.View.View.View.View.View.View.View.view.j.7) .jpg$ TraversalRunnable.run (ViewRootImpl.java:6013) в android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) в android.view.Choreographer.doCallbacks (Choreographer.java:670) в android.view.Choreographer.doFrame (Choreographer.java:606) в android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:844) в android.os.Hler(Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5417) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Причина: java.lang.ClassCastException: android.widget.LinearLayout нельзя преобразовать в android.widget.TextView в android.widget.ArrayAdapter.create