小编Mel*_*Mel的帖子

Android DataBinding和MVVM - 使用相同视图模型为不同条件使用相同的布局文件

我一直在开发一个带有数据绑定和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.

到目前为止我尝试了什么:

  1. 使用布局和布局 - 土地文件夹(失败,错误在上面解释)

  2. 使用布局别名使用我在此处找到的布局别名问题199344:数据绑定不适用于布局别名.尝试这种方法时,我没有更改xml文件中的任何内容.这也失败了,错误是Could not write to com.myapp.package.databinding.MyBinding

是否无法data在多个布局文件中使用数据绑定标记?在使用数据绑定时,我应该使用什么来为不同的状态使用不同的布局?谢谢 !

编辑:删除class="MyBinding"没有更改错误.

android android-layout android-studio android-databinding

16
推荐指数
1
解决办法
4548
查看次数

Android onBackPressed处理新的导航组件

我需要一些建议;

我正在试验导航库.我有一个有webView的片段.我想检查它canGoBack是否可以这样做,否则不会干扰.

1.接口方法:由于Navigation正在处理事务,我不再手动创建片段的实例,我可以将其指定为活动中的监听器.

1.重点聆听:我认为它看起来很难看,我不认为这是一个通用的解决方案,所以我跳过这个.

关于如何使用导航库,我需要一些意见.当你试图从中获取currentDestinationnavController,它的NavigationDestination对象提供有关当前片段的信息,例如xml中给出的标签.

当我检查时fragmentManager,我发现它backStack是空的并且片段事务发生时没有标记.

恕我直言,它不适合库的概念来进行findFragment某种操作以与当前片段进行某种程度的交互,但我现在似乎无法通过它找到方法.有什么建议 ?

android android-fragments kotlin android-architecture-components android-architecture-navigation

13
推荐指数
2
解决办法
2948
查看次数

Android 导航组件 - 在包含的模块图之间导航

我有一个带有 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)

但默认情况下,无法向编辑器上的包含图形添加操作:

SS1

我可以在 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

10
推荐指数
1
解决办法
657
查看次数

Kotlin 生成的字节码会影响方法计数吗?

例如,如果我使用

methodReference = ::method
Run Code Online (Sandbox Code Playgroud)

而不是

methodReference = { method(it) }
Run Code Online (Sandbox Code Playgroud)

由于反射getOwner,反编译的代码将包含Java 代码中的 、getNamegetSignature方法。这些方法是否计入 64k 限制?

java android kotlin

8
推荐指数
1
解决办法
356
查看次数