标签: androidx

数据绑定失败,"无法猜测"

自Android Studio更新后,3.2.0我遇到以下问题:

任务':mobile:dataBindingGenBaseClassesDebug'的执行失败.

>无法猜测com.ACME.database.model.Order

也看到了这个答案,暗示了"包名必须以小写字母开头".

......似乎是相似的,好像这个variable任务是原因:

<data class=".databinding.OrderFragmentBinding">
    <variable name="order" type="com.ACME.database.model.Order"/>
    ...
</data>
Run Code Online (Sandbox Code Playgroud)

found:用于绑定类的新数据绑定编译器,它不解释行为的变化.

:这样的作业是否也受到该命名惯例的影响?我的意思是,有没有机会(除了改变大写的包名)以使数据绑定v2"猜测"成功?

android android-gradle-plugin android-databinding android-studio-3.2 androidx

1
推荐指数
5
解决办法
6377
查看次数

Dagger2 与 Androidx,SupportFragmentInjector 问题

我正在尝试在新应用程序中实现 Dagger2 注入,唯一失败的是 DaggerAppCompatActivity 和 SupportFragmentInjector。

当我转到 DaggerAppCompatActivity 代码时,我看到:

在此处输入图片说明

它尝试在 androidx 重构之前从库版本中引用 AppCompatActivity 和 Fragment。当我继承这个类时,我什至不能调用 setContentView(),因为它不可用。

我想将此代码复制粘贴到我自己的基本活动中,但 HasSupportFragmentInjector 使用 pre-adroidX Fragment。

有没有办法让它与 AndroidX 一起工作?

编辑:这是我在尝试使用 DaggerAppCompatActivity 作为@ContributesAndroidInjector 提到的活动的基类时得到的错误。如果我只是简单地做 AndroidInjection.inject(this) 而不是这个继承,它工作得很好。

C:\Users\micha\Workspace\StudioProjects\BirthdayGift\app\build\tmp\kapt3\stubs\debug\com\mpowloka\birthdaygift\common\di\ApplicationComponent.java:8: error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> cannot be provided without an @Provides-annotated method.
public abstract interface ApplicationComponent {
                ^
      java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> is injected at
          dagger.android.DispatchingAndroidInjector.<init>(injectorFactories)
      dagger.android.DispatchingAndroidInjector<androidx.fragment.app.Fragment> is injected at
          dagger.android.support.DaggerAppCompatActivity.supportFragmentInjector
      com.mpowloka.birthdaygift.persons.PersonsActivity is injected at
          dagger.android.AndroidInjector.inject(T)
  component path: com.mpowloka.birthdaygift.common.di.ApplicationComponent ? com.mpowloka.birthdaygift.common.di.ActivityBindingModule_PersonsActivity.PersonsActivitySubcomponent
Run Code Online (Sandbox Code Playgroud)

编辑 2:我的项目依赖项(包含在单独的 gradle 文件中): …

android android-support-library dagger androidx

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

androidx.core.os.ParcelableCompat 已弃用

应该使用什么,因为该类已被弃用。ParcelableCompat已过时,newCreator()已过时,ParcelableComparCreatorCallbacks <>已被弃用。谢谢!

public static final Parcelable.Creator<SavedState> CREATOR
            = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks<SavedState>() {

        @Override
        public SavedState createFromParcel(Parcel in, ClassLoader loader) {
            return new SavedState(in, loader);
        }

        @Override
        public SavedState[] newArray(int size) {
            return new SavedState[size];
        }

    });
Run Code Online (Sandbox Code Playgroud)

java android androidx

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

Flutter和AndroidX不兼容如何手动设置依赖项

由于AndroidX不兼容,在编译时出现错误:

Android依赖项“ androidx.vectordrawable:vectordrawable”对于编译(1.0.0)和运行时(1.0.1)类路径具有不同的版本。您应该通过DependencyResolution手动设置相同的版本

以下->这篇帖子<-我向build.gradle添加了一些代码

allprojects {

configurations.all {
    resolutionStrategy.force"androidx.vectordrawable:vectordrawable:1.0.0",
}
repositories {
    google()
    jcenter()
}
Run Code Online (Sandbox Code Playgroud)

下次跑步给了我另一个错误

Android依赖项“ androidx.core:core”对于编译(1.0.0)和运行时(1.0.1)类路径具有不同的版本。您应该通过DependencyResolution手动设置相同的版本

我试图添加这个

“ androidx.vectordrawable:vectordrawable:1.0.0”,“ androidx.core:core:1.0.0”,

但我可能做错了,因为我得到了经典的“意外的bla bla bla”

有什么建议吗?

提前致谢

[编辑]我试过这个老把戏一样好,但没有工作(也降级包所需HERE

rootProject.allprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'androidx.core') {
                details.useVersion "1.0.1"
            }
            if (details.requested.group == 'androidx.lifecycle') {
                details.useVersion "2.0.0"
            }
            if (details.requested.group == 'androidx.versionedparcelable') {
                details.useVersion "1.0.0"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在返回另一个错误

Android依赖项“ androidx.appcompat:appcompat”对于编译(1.0.0)和运行时(1.0.2)类路径具有不同的版本。您应该通过DependencyResolution手动设置相同的版本

android gradle dart flutter androidx

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

androidx.navigation.fragment.NavHostFragment 无法从 xml 文件访问

我正在尝试使用带有底部导航视图的 androidx 导航。所以当我在 xml 文件中放置带有 android:name = "androidx.navigation.fragment.NavHostFragment" 的片段时,它给了我一个错误。我猜 xml 没有看到这个库或这个 Fragment

Here is xml file :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".weather.WeatherActivity"
        android:orientation="vertical"
        android:weightSum="10"
>
    <androidx.appcompat.widget.Toolbar
            android:id="@+id/w_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            android:theme="@style/ToolbarColoredBackArrow"
    />
        <fragment
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="9.6"
                android:id="@+id/nav_host_fragment"
                app:defaultNavHost = "true"
                app:navGraph = "@navigation/mobile_navigation"
                android:name="androidx.navigation.fragment.NavHostFragment"
                  />
        <com.google.android.material.bottomnavigation.BottomNavigationView
                android:id="@+id/bottom_nav"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.4"
                app:menu="@menu/bottom_nav"
        >

        </com.google.android.material.bottomnavigation.BottomNavigationView>

</LinearLayout>


Activity class:
class WeatherActivity : AppCompatActivity() {
    private lateinit var navController: NavController
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(com.example.upgrade.R.layout.activity_weather)
        val …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack androidx android-jetpack-navigation

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

ListAdapter 没有类型参数 - 如何在 AndroidX 中创建单独的 ViewHolder 文件?

我一直在学习 AndroidX,我想ViewHolder在我自己的Adapter类中创建一个非嵌套的类。到目前为止,我正在做类似的事情

主适配器.kt

class MainAdapter : ListAdapter<MainResponse, MainAdapter.MainViewHolder>(MainDiffCallback()) {

  //onCreate
  //onBind
  //...

  class MainViewHolder(
        private val binding: ListItemMainBinding
    ) : RecyclerView.ViewHolder(binding.root) {

        fun bind(listener: View.OnClickListener) {
            with(binding) {
                this.listener = listener
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想将它们创建为单独的文件,例如

主适配器.kt

class MainAdapter : ListAdapter<MyObject, MainViewHolder>(MainDiffCallback()) {
  //onCreate
  //onBind
  //...
}
Run Code Online (Sandbox Code Playgroud)

MainViewHolder.kt

class MainViewHolder(private val binding: ListItemMainBinding): RecyclerView.ViewHolder(binding.root) {

    fun bind(listener: View.OnClickListener, manufacturer: String, color: Int) {
        with(binding) {
            binding.listener = listener
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

使用不同的文件,我不确定这将如何在MainAdapter. 这会class …

generic-type-argument android-recyclerview android-databinding androidx android-listadapter

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

迁移到androidX后,发布版本中的OkHttp帖子内容为空

在迁移到 androidX 之前,发布版本适用于每个 HTTP 请求。

迁移到 androidX 后,每个GET请求都有效,但所有POST请求都无效。它无法向服务器端发送参数。POST请求的所有内容都是空的。

我所做的唯一更改是将此项目迁移到 androidX。

我不确定在哪里可以找到更多的见解... :(

[更新]:通过kushan评论推荐添加接口和POJO :)

界面

@POST("/api/preference")
Call<RoasterPreference> updatePreference(@Body RoasterPreference roasterPreference);
Run Code Online (Sandbox Code Playgroud)

POJO 对象

import com.google.gson.annotations.SerializedName;

public class RoasterPreference {

  @SerializedName("type")
  private String type;

  @SerializedName("value")
  private String value;

  public RoasterPreference(String _type,String _value){

    type = _type;
    value = _value;
  }
} 
Run Code Online (Sandbox Code Playgroud)

来自调试版本的 OkHttp 日志:

D/OkHttp: --> POST http://192.168.0.1:9999/api/preference
Content-Type: application/json; charset=UTF-8
Content-Length: 29
{"type":"t_unit","value":"0"}
--> END POST (29-byte body)
Run Code Online (Sandbox Code Playgroud)

发布版本中的 OkHttp 日志:

D/OkHttp: --> POST …
Run Code Online (Sandbox Code Playgroud)

android android-studio okhttp retrofit2 androidx

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

启用数据绑定时的 java.lang.NullPointerException = true

每当我在我的应用程序 gradle 中启用它时

dataBinding { 
    enabled = true
}
Run Code Online (Sandbox Code Playgroud)

然后同步 -> 完全成功。

但是当我“运行”它时,它构建失败并显示此错误

java.lang.NullPointerException at android.databinding.tool.store.LayoutFileParser.parseOriginalXml(LayoutFileParser.java:135) at android.databinding.tool.store.LayoutFileParser.parseXml(LayoutFileParser.java:93) ...

我的应用程序很少有 Kotlin 代码,android 版本是 3.5,minSdkVersion 19,targetSdkVersion 28,并升级到 androidX

我该如何解决这个问题?我应该搜索哪个部分来解决这个问题???

除了上面的代码,一切都很完美。


编辑 当我在升级到 androidX 之前回滚我的代码并编译它时,它还显示“空点异常”,此时,除了“空点异常”之外,没有额外的消息。


android android-databinding androidx

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

LocalBroadcastManager 在 androidx.appcompat:appcompat:1.1.0 中找不到,但在 1.0.0 中可用

我刚刚通过Refactor -> Move to AndroidxAndroid Studio 中的选项迁移到了 androidx 。默认情况下,该build.gradle文件正在使用:

implementation 'androidx.appcompat:appcompat:1.0.0'
Run Code Online (Sandbox Code Playgroud)

我在项目的很多地方都使用了 LocalBroadcastManager。我可以完美地import androidx.localbroadcastmanager.content.LocalBroadcastManager与上面的 v1.0.0 一起使用androidx.appcompat。但是当我将其更新为 1.1.0 时:

implementation 'androidx.appcompat:appcompat:1.1.0'
Run Code Online (Sandbox Code Playgroud)

导入不起作用。我收到Unresolved reference : localbroadcastmanager错误。

我试图清理项目并多次重建项目,但问题仍然存在。

有什么解决办法吗?谢谢。

android localbroadcastmanager androidx

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

androidx 中“设计”的依赖是什么?

我正在使用导航抽屉,这没有错误

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
Run Code Online (Sandbox Code Playgroud)

但是在androidx中更新后

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.appcompat:design:1.1.0'
Run Code Online (Sandbox Code Playgroud)

此代码不适用于导航抽屉。

我的问题是这种情况下的依赖是什么。请帮忙。

android android-appcompat android-support-library material-components-android androidx

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