Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/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 如何从SafeArgs中的资源中获取默认字符串值?_Android_String_Androidx_Android Navigation_Android Safe Args - Fatal编程技术网

Android 如何从SafeArgs中的资源中获取默认字符串值?

Android 如何从SafeArgs中的资源中获取默认字符串值?,android,string,androidx,android-navigation,android-safe-args,Android,String,Androidx,Android Navigation,Android Safe Args,我正在学习Android NavigationUI,并尝试使用安全参数中的字符串默认值设置工具栏标题。但是我有一些问题 “字符串资源”文件: <string name="title_add_item">Add new items</string> 如果{app:argType=“string”}我收到一个错误: Caused by: org.xmlpull.v1.XmlPullParserException: unsupported value 'Add n

我正在学习Android NavigationUI,并尝试使用安全参数中的字符串默认值设置工具栏标题。但是我有一些问题

“字符串资源”文件:

    <string name="title_add_item">Add new items</string>

如果
{app:argType=“string”}
我收到一个错误:

 Caused by: org.xmlpull.v1.XmlPullParserException: unsupported value 'Add new items' for string. You must use a "reference" type to reference other resources.
如果
{app:argType=“reference”}
应用程序工作,但我在标题中有一个数字(我认为这是一个资源id):

当然,我可以通过从参数中获取工具栏标题的值来在代码中指定工具栏标题的值。但是,是否可以更改此代码以便正确填写标题?

请查看

您不需要使用参数来设置静态标题。 您可以使用
android:label
将要在工具栏中显示的标题设置为导航图中的片段

<fragment
    android:id="@+id/addNewItemFragment"
    android:name="com.myapplication.AddNewItemFragment"
    android:label="@string/title_add_item"
    tools:layout="@layout/fragment_add_new_item" >
这样,您就不需要覆盖SupportNavigateUp上的
,一旦导航到另一个片段,标题将自动更新

如果出于某种原因,您确实希望将参数与
android:label
中的值组合在一起,那么除了在代码中使用
app:argType=“reference”
并将两者组合在一起之外,别无他法

仅在引用类型中支持对资源的引用。使用 任何其他类型中的资源引用都会导致异常

请随时启动现有问题:。目前,您可以使用
app:argType=“string”
对字符串值进行硬编码,或者尝试以编程方式进行设置,直到解析为止


是的,但想法是如果“defaultValue”saveArg变量未设置,则自动从该变量设置标题。我发现它是一个
<fragment
    android:id="@+id/addNewItemFragment"
    android:name="com.myapplication.AddNewItemFragment"
    android:label="@string/title_add_item"
    tools:layout="@layout/fragment_add_new_item" >
val navController = findNavController(R.id.nav_host_fragment)
val appBarConfiguration = AppBarConfiguration(navController.graph)
findViewById<Toolbar>(R.id.toolbar)
    .setupWithNavController(navController, appBarConfiguration)