android - 如何在 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
因为它不属于这里并且使您感到困惑。
这会将您的错误更改为getString()
.FragmentPagerAdapter
任何一个:
将字符串本身传递到 your
MyPagerAdapter
中,例如在其构造函数中,或者Context
将 a (例如 your )传递给Activity
yourMyPagerAdapter
,例如在其构造函数中,然后调用getString()
它Context
推荐阅读
- django - /basic_app/register/ 处的 ValueError
- sas - 将日期列转换为正确的 sas 日期并创建年/月列,从这个日期 11FEB13:22:59:00 创建年列
- chromecast - chromecast 接收器中的 cast.framework.media.ShakaPlayer 问题,同时从基于 Web 的发送器播放 DRM 内容
- javascript - 如何根据存储在另一个 reducer 中的另一个值,从 reducer 获取 key 状态的动态值?反应/还原
- kubernetes - 当 heketi 端点与 pv 和 PVC 不在同一个命名空间时,glusterfs 如何创建卷
- python - 从字符列表中查找可能的单词而不使用字符两次
- android - viewPager 回调中的片段
- openpyxl - 如何解决 Openpyxl TypeError:预期
openpyxl-3.0.3 中的错误 - node.js - 发送除 GET 以外的 http 请求时无响应或无状态码
- uikit - SwiftUI 有没有更好的方法来删除 NavigationView 上的背景