Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在kotlin文件中使用字符串资源_Android_Kotlin - Fatal编程技术网

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

Android 如何在kotlin文件中使用字符串资源,android,kotlin,Android,Kotlin,我刚刚开始制作Android应用程序,我想正确使用字符串资源文件。我已经用它创建了一个选项卡式布局,但我现在正尝试使用字符串资源作为选项卡名称。不过我还是经常出错 在我的res/values/strings.xml文件中: <?xml version="1.0" encoding="utf-8"?> <resources> ... <string name="timeline_tab_name">Timeline</string>

我刚刚开始制作Android应用程序,我想正确使用字符串资源文件。我已经用它创建了一个选项卡式布局,但我现在正尝试使用字符串资源作为选项卡名称。不过我还是经常出错

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
    ...
    <string name="timeline_tab_name">Timeline</string>
</resources>
我的错误发生在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\u选项卡\u name
时。它在工具提示中这样说:

Type mismatch.
Required:  ContentResolver!
Found:     Int
我找不到有关此错误的任何信息,我也没有尝试过修复它。有人能帮我吗?我找到的所有使用参考资料文件的指南都不会使用相同的代码出现错误。

首先,删除:

import android.provider.Settings.Global.getString
因为它不属于这里,让你困惑

这将使你的错误变成那样

要么:

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

  • 上下文
    (例如
    活动
    )传递到
    MyPagerAdapter
    (例如在其构造函数中)中,并对该
    上下文
    调用
    getString()


“这给了我一个错误”--由于在
活动中没有
getPageTitle()
可供您
覆盖的
,因此这似乎不是活动本身的函数,而可能是
PagerAdapter
。您可能会考虑张贴整个文件,或至少整个类。您是正确的。这是我链接的指南中内置的自定义寻呼机适配器,我的错误。除了字符串资源外,它还可以完美地工作。我已经将完整的kotlin代码放入我原来的postPass
Context
到FragmentPagerAdapter,然后调用
getString()
,我该怎么做?再说一次,我对android非常陌生,这让我很困惑。(我在windows UWP中学习了应用程序开发,这对理解imo来说更简单)好的,去掉这一行确实改变了错误,正如你所说的那样。这两件事我都不知道该怎么办。要准确地理解程序在做什么有点困难,但是“第二个选项卡”和“第三个选项卡”的两种可能方式对选项卡的标题起作用,所以我想我可以在那里放一个字符串资源。@Graham:在您的活动中,您有
val fragmentAdapter=MyPagerAdapter(supportFragmentManager)
。而且,在适配器类中,有
类MyPagerAdapter(fm:FragmentManager)
。您可以向构造函数添加其他参数。例如,您可以使用
类MyPagerAdapter(fm:FragmentManager,tab1Title:String)
并将其命名为
val fragmentAdapter=MyPagerAdapter(supportFragmentManager,getString(R.String.timeline\u tab\u name))
。或者,使用
类MyPagerAdapter(fm:FragmentManager,context:context)
val fragmentAdapter=MyPagerAdapter(supportFragmentManager,this)
Type mismatch.
Required:  ContentResolver!
Found:     Int
import android.provider.Settings.Global.getString