我一直在开发一个带有数据绑定和MVVM的应用程序.
我正试图在横向模式下为我的应用程序使用替代布局.我有:
layout/fragment_content.xml
layout-land/fragment_content.xml
Run Code Online (Sandbox Code Playgroud)
两种布局都具有不同外观的相同视图,并从相同的视图模型获取提要,如下所示:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class="MyBinding">
<variable
name="viewModel"
type="com.myapp.package.viewModel.VMFirst"/>
<variable
name="controlModel"
type="com.myapp.package.viewModel.VMSecond"/>
</data>
<DIFFERENT CONTENT HERE>
Run Code Online (Sandbox Code Playgroud)
两种布局都存在所有视图和id.
好吧,问题是,它不编译,错误只是"cannot find symbol method getViewModel"和另一个变量的getter.
到目前为止我尝试了什么:
使用布局和布局 - 土地文件夹(失败,错误在上面解释)
使用布局别名使用我在此处找到的布局别名问题199344:数据绑定不适用于布局别名.尝试这种方法时,我没有更改xml文件中的任何内容.这也失败了,错误是Could not write to com.myapp.package.databinding.MyBinding
是否无法data在多个布局文件中使用数据绑定标记?在使用数据绑定时,我应该使用什么来为不同的状态使用不同的布局?谢谢 !
编辑:删除class="MyBinding"没有更改错误.
我需要一些建议;
我正在试验导航库.我有一个有webView的片段.我想检查它canGoBack是否可以这样做,否则不会干扰.
1.接口方法:由于Navigation正在处理事务,我不再手动创建片段的实例,我可以将其指定为活动中的监听器.
1.重点聆听:我认为它看起来很难看,我不认为这是一个通用的解决方案,所以我跳过这个.
关于如何使用导航库,我需要一些意见.当你试图从中获取currentDestination时navController,它的NavigationDestination对象提供有关当前片段的信息,例如xml中给出的标签.
当我检查时fragmentManager,我发现它backStack是空的并且片段事务发生时没有标记.
恕我直言,它不适合库的概念来进行findFragment某种操作以与当前片段进行某种程度的交互,但我现在似乎无法通过它找到方法.有什么建议 ?
android android-fragments kotlin android-architecture-components android-architecture-navigation
我有一个带有 3 个模块的活动应用程序 - app, list& detail。我的活动在app模块中,它托管唯一的NavHostFragment. 所有模块都有自己的导航图。detail的起点需要一个长参数。app的图是其他图的父图:
<?xml version="1.0" encoding="utf-8"?>
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_main"
app:startDestination="@id/nav_list">
<include app:graph="@navigation/nav_list" />
<include app:graph="@navigation/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
但默认情况下,无法向编辑器上的包含图形添加操作:
我可以在 xml 文件中添加一个全局操作,然后在编辑器中显示:
<?xml version="1.0" encoding="utf-8"?>
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_main"
app:startDestination="@id/nav_list">
<include app:graph="@navigation/nav_list" />
<include app:graph="@navigation/nav_detail" />
<action
android:id="@+id/action_global_detailFragment"
app:destination="@id/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
我不想使用全局操作,而是添加适当的actions 来封装导航模式。嵌套图已经包含它们的导航逻辑,可能只需要输入作为入口点。我不确定这是否不受支持并且我遗漏了一些东西,否则为什么不呢?在两个或多个包含的图形之间导航的方法是什么?
android android-navigation android-architecture-components android-architecture-navigation
例如,如果我使用
methodReference = ::method
Run Code Online (Sandbox Code Playgroud)
而不是
methodReference = { method(it) }
Run Code Online (Sandbox Code Playgroud)
由于反射getOwner,反编译的代码将包含Java 代码中的 、getName、getSignature方法。这些方法是否计入 64k 限制?
android ×4
android-architecture-components ×2
android-architecture-navigation ×2
kotlin ×2
java ×1