【发布时间】:2020-04-02 07:26:00
【问题描述】:
当我想启动名为 DetailActivity 的新活动时,我的应用程序将 crash.
这是我的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.notepad, PID: 4793
android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.content.res.Resources.getText(Resources.java:244)
at androidx.appcompat.widget.ResourcesWrapper.getText(ResourcesWrapper.java:54)
at android.widget.TextView.setText(TextView.java:3888)
at com.example.notepad.databinding.ActivityDetailBindingImpl.executeBindings(ActivityDetailBindingImpl.java:115)
at androidx.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:473)
at androidx.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:445)
...
我认为它与setContentView 有关。因为当我使用常见的setContentView 程序运行良好但当我使用DataBindingUtil.setContentView() 我的应用程序crashs. 这是DetailActivity:
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import com.example.notepad.databinding.ActivityDetailBinding
class DetailActivity : AppCompatActivity() {
private lateinit var binding: ActivityDetailBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_detail)
if(intent != null) {
binding.nameText.text = intent.getStringExtra(EXTRA_NAME)
binding.ageText.text = intent.getStringExtra(EXTRA_AGE)
}
}
这是activity_detail:
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
<data>
<variable
name="person"
type="com.example.notepad.Person" />
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DetailActivity">
<TextView
android:id="@+id/name_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{person.name}"/>
<TextView
android:id="@+id/age_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{person.age}"/>
</LinearLayout>
</layout>
这是个人类:
class Person(var name: String , var age: Int)
[更新] 我使用 kolin 时,我的 ActivityDetailBindingImpl 文件在 java 中。也许问题是关于这个的。
【问题讨论】:
-
你能把
com.example.notepad.Person的代码贴出来吗?从堆栈跟踪看来,您正在将文本视图的文本设置为不存在的资源 - 准确地说是 0。如果Person.name或Person.age是整数,我只能看到这可能。我猜age是? -
发布更新。 person 是一个简单的类
标签: android gradle kotlin data-binding android-databinding