两周前我完成了我的第一个 Android 应用程序并在 Play Store 上发布。当我查看 Android Vitals(Anrs&Crash) 时,我看到一些针对不同类型 Android 设备的崩溃。但我无法在真实设备或模拟器上重现此崩溃。
Play 商店的崩溃日志
android.view.InflateException:在 com.ehliyetcepte.ehliyet.sinav.sorulari.Adapter.MenuAdapter 的 android.view.LayoutInflater.inflate (LayoutInflater.java:429) 的 android.view.LayoutInflater.inflate (LayoutInflater.java:551) .onCreateViewHolder (MenuAdapter.java:11) 在 com.ehliyetcepte.ehliyet.sinav.sorulari.Adapter.MenuAdapter.onCreateViewHolder (MenuAdapter.java:11) 在 androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder (RecyclerView.java) 在androidx.recyclerview.widget.RecyclerView$Adapter.getItemCount (RecyclerView.java) 在 androidx.recyclerview.widget.RecyclerView$Adapter.getItemViewType (RecyclerView.java) 在 androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java: 64) 在 androidx.recyclerview.widget.RecyclerView$Recycler。getViewForPosition (RecyclerView.java:5) 在 androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5) 在 androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next (LinearLayoutManager.java:5) 在 androidx.recyclerview .widget.GridLayoutManager.assignSpans (GridLayoutManager.java) 在 androidx.recyclerview.widget.GridLayoutManager.checkLayoutParams (GridLayoutManager.java) 在 androidx.recyclerview.widget.GridLayoutManager.collectPrefetchPositionsForLayoutState (GridLayoutManager.java) 在 androidx.recyclerview.widget.GridLayoutManager。在 androidx.recyclerview.widget.GridLayoutManager.generateLayoutParams (GridLayoutManager.java) 在 androidx.recyclerview.widget.GridLayoutManager.generateLayoutParams (GridLayoutManager.java)爪哇)*
和 main.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorRed"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/instagramClicked"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/icon_instagram" />
<Button
android:id="@+id/facebookClicked"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/icon_facebook"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="200dp"
android:background="@color/colorRed"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" />
</RelativeLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:background="@drawable/ehliyet_80_transparan"
android:contentDescription="Logo"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="ehliyetCepte"
android:contentDescription="ehliyetCepte"
android:textColor="@color/colorWhite"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<Button
android:id="@+id/start"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="150dp"
android:layout_height="55dp"
android:layout_marginTop="100dp"
android:text="SINAVA BAŞLA"
android:textColor="@color/colorRed"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
和 MainActivity.kt
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.StrictMode
import android.os.StrictMode.VmPolicy
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.ehliyetcepte.ehliyet.sinav.sorulari.Adapter.MenuAdapter
import com.ehliyetcepte.ehliyet.sinav.sorulari.Data.MenuModel
import com.emregurses.babysleep.Common.Common
import com.emregurses.babysleep.Common.SpacesItemDecoration
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var adapter: MenuAdapter
lateinit var itemList: MutableList<MenuModel>
lateinit var recycle_view: RecyclerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recycle_view = findViewById(R.id.recyclerViewMenu) as RecyclerView
initData()
setData()
instagramClicked.setOnClickListener {
val uri = Uri.parse("http://instagram.com/_u/ehliyetapp")
val likeIng = Intent(Intent.ACTION_VIEW, uri)
likeIng.setPackage("com.instagram.android")
try {
startActivity(likeIng)
} catch (e: ActivityNotFoundException) {
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("http://instagram.com/ehliyetapp")
)
)
}
}
facebookClicked.setOnClickListener {
val uri = Uri.parse("https://www.facebook.com/ehliyetcepte")
val likeIng = Intent(Intent.ACTION_VIEW, uri)
likeIng.setPackage("com.facebook.katana")
try {
startActivity(likeIng)
} catch (e: ActivityNotFoundException) {
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/ehliyetcepte")
)
)
}
}
}
private fun setData() {
if (this != null) {
adapter = MenuAdapter(this, itemList)
val layoutManager = GridLayoutManager(this, Common.NUM_OF_COLUMN)
layoutManager.orientation = RecyclerView.VERTICAL
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup(){
override fun getSpanSize(i: Int): Int {
return if(adapter != null){
when(adapter!!.getItemViewType(i)){
1 -> 1
0 -> Common.NUM_OF_COLUMN
else -> -1
}
} else {
-1
}
}
}
recycle_view.layoutManager = layoutManager
recycle_view.addItemDecoration(SpacesItemDecoration(8))
recycle_view.adapter = adapter
}
}
private fun initData() {
itemList = ArrayList()
itemList.add(MenuModel(R.drawable.img_review , "Exams",1))
itemList.add(MenuModel(R.drawable.img_sss , "Exams 2",2))
itemList.add(MenuModel(R.drawable.img_traffic_light , "Exams 3",3))
itemList.add(MenuModel(R.drawable.img_appreview , "Exams 4",4))
}
}