如何在kotlin文件中使用字符串资源



我刚刚开始制作Android应用程序,我想正确使用字符串资源文件。我已经使用本指南创建了一个选项卡布局,这很有效,但我现在正尝试使用字符串资源来创建选项卡名称。不过我总是犯错误。

在我的res/values/strings.xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<string name="timeline_tab_name">Timeline</string>
</resources>

现在,当我引用xml文件中的名称时,这就起作用了。

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/timeline_tab_name"
android:textSize="40sp"/>

这是MainActivity.kt

package com.*****.*****
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragmentAdapter = MyPagerAdapter(supportFragmentManager)
viewpager_main.adapter = fragmentAdapter
tabs_main.setupWithViewPager(viewpager_main)
}
}

我的错误发生在MyPagerAdapter.kt 中

package com.*****.*****
import android.provider.Settings.Global.getString
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> FirstFragment()
1 -> SecondFragment()
else -> {
return ThirdFragment()
}
}
}
override fun getCount(): Int {
return 3
}
override fun getPageTitle(position: Int): CharSequence {
val timeline_name: String = getString(R.string.timeline_tab_name)
return when (position) {
0 -> timeline_name
1 -> "Second Tab"
else -> "Third Tab"
}
}
}

错误发生在我尝试获取资源R.string.timeline_tab_name时。它在工具提示中这样说:

Type mismatch.
Required:  ContentResolver!
Found:     Int

我找不到关于这个错误的信息,也没有尝试过修复它。有人能帮我吗?我找到的所有使用资源文件的指南都没有使用相同的代码得到错误。

首先,去掉:

import android.provider.Settings.Global.getString

因为它不属于这里,让你感到困惑。

这将使您的错误变为FragmentPagerAdapter中没有可用的getString()函数。

任一:

  • 将字符串本身传递到MyPagerAdapter中,例如在其构造函数或中

  • Context(如Activity(传递到MyPagerAdapter(如其构造函数中(,并在该Context上调用getString()

最新更新