小编Leo*_*eon的帖子

房间持久性:错误:实体和Pojos必须具有可用的公共构造函数

我正在将一个项目转换为Kotlin,我正在尝试使我的模型(也是我的实体)成为一个数据类,我打算使用Moshi转换来自API的JSON响应

@Entity(tableName = "movies")
data class MovieKt(
    @PrimaryKey
    var id : Int,
    var title: String,
    var overview: String,
    var poster_path: String,
    var backdrop_path: String,
    var release_date: String,
    var vote_average: Double,
    var isFavorite: Int
)
Run Code Online (Sandbox Code Playgroud)

我无法构建应用程序导致以下错误

实体和Pojos必须具有可用的公共构造函数.您可以拥有一个空构造函数或其参数与字段匹配的构造函数(按名称和类型).找不到字段的setter.

我发现的例子离不远

关于如何解决它的想法?

android kotlin android-room android-architecture-components

46
推荐指数
12
解决办法
3万
查看次数

Dagger 2:@ Component.Builder缺少所需模块或组件的setter:[appi.example.com.dagger.AppModule]`

我正在配置新的Dagger Android模块但我收到此错误这是我的组件:

@AppScope
@Component(modules = {AppModule.class, NetModule.class})
public interface AppComponent {

  @Component.Builder
  interface Builder {
    @BindsInstance
    Builder application(ExampleApplication application);

    @BindsInstance
    Builder appModule(AppModule appModule);

    @BindsInstance
    Builder netModule(NetModule netModule);

    AppComponent build();
  }

  void inject(ExampleApplication __); 
...
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中构建了这样的内容

appComponent = DaggerAppComponent
      .builder()
      .application(this)
      .appModule(new AppModule(this))
      .netModule(new NetModule())
      .build()
      .inject(this);
Run Code Online (Sandbox Code Playgroud)

但我仍然收到错误

错误:(20,3)错误:@ Component.Builder缺少所需模块或组件的setter:[app.example.com.dagger.AppModule]

根据应该是正确的文件,我错过了什么?

例如,这可能是一个带有Builder的有效组件:

@Component(modules = {BackendModule.class, FrontendModule.class})
interface MyComponent {
  MyWidget myWidget();

  @Component.Builder
  interface Builder {
    MyComponent build();
    Builder backendModule(BackendModule bm);
    Builder frontendModule(FrontendModule fm);
  }
}
Run Code Online (Sandbox Code Playgroud)

java android dependency-injection dagger-2

40
推荐指数
3
解决办法
2万
查看次数

导航架构组件 - 对话框片段

是否可以使用带有DialogFragment的新导航架构组件?我是否必须创建自定义导航器?

我很乐意将它们与导航图中的新功能结合使用.

android android-architecture-components android-jetpack android-architecture-navigation

39
推荐指数
4
解决办法
1万
查看次数

导航组件:IllegalStateException 片段与片段管理器无关

我正在使用导航组件版本2.1.0-rc01,我使用 3 个屏幕之间来回导航

Navigation.findNavController(it).navigate(R.id.action_participants)

第二次通过相同的屏幕后,我可以看到第二个片段,但我收到一个异常。我在 FragmentManager 上启用了日志,似乎没有附加相同片段的不同实例,导致错误

关于为什么导航组件创建另一个未附加的片段实例的任何想法?获取附加片段的任何解决方法?

    2019-08-15 16:59:30.895 30041-30041/com.app.debug D/FragmentManager:   mName=3-2131361912 mIndex=-1 mCommitted=false
2019-08-15 16:59:30.895 30041-30041/com.app.debug D/FragmentManager:   mEnterAnim=#7f01001e mExitAnim=#7f01001f
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:   mPopEnterAnim=#7f010020 mPopExitAnim=#7f010021
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:   Operations:
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:     Op #0: REPLACE StaffBookingDetailsFragment{82e8301 (97f79b28-d8c1-432a-9e1c-3a781dd42434) id=0x7f0a01c5}
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:   enterAnim=#7f01001e exitAnim=#7f01001f
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:   popEnterAnim=#7f010020 popExitAnim=#7f010021
2019-08-15 16:59:30.896 30041-30041/com.app.debug D/FragmentManager:     Op #1: SET_PRIMARY_NAV StaffBookingDetailsFragment{82e8301 (97f79b28-d8c1-432a-9e1c-3a781dd42434) id=0x7f0a01c5}
2019-08-15 16:59:30.897 30041-30041/com.app.debug D/FragmentManager:   enterAnim=#7f01001e exitAnim=#7f01001f
2019-08-15 16:59:30.897 30041-30041/com.app.debug D/FragmentManager:   popEnterAnim=#7f010020 popExitAnim=#7f010021
2019-08-15 16:59:31.935 …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-jetpack android-architecture-navigation android-jetpack-navigation

8
推荐指数
3
解决办法
5973
查看次数

改造2.6.0:自定义协程CallAdapterFactory

我需要在api中进行自定义错误处理,并且我想在新版本的Retrofit中使用协程。由于我们不必再使用了Deferred,所以我们自己的杰克·沃顿(Jake Wharton)一个月前在reddit上写了这个

在此处输入图片说明

https://github.com/square/retrofit/blob/master/samples/src/main/java/com/example/retrofit/RxJavaObserveOnMainThread.java

但是我在创建CallAdapterFactory适当的文件时遇到了问题。

具体来说,我不明白:“委托给内置工厂,然后将值包装在密封类中”

是否已经有人在使用此设置可以提供帮助?

这是当前代码

sealed class Results<out T: Any> {
    class Success<out T: Any>(val response: T): Results<T>()
    class Failure(val message: String, val serverError: ServerError?): Results<Nothing>()
    object NetworkError: Results<Nothing>()
}


class ResultsCallAdapterFactory private constructor() : CallAdapter.Factory() {

    companion object {
        @JvmStatic
        fun create() = ResultsCallAdapterFactory()
    }

    override fun get(returnType: Type, annotations: Array<Annotation>, retrofit: Retrofit): CallAdapter<*, *>? {
        return try {
            val enclosedType = returnType as ParameterizedType
            val responseType = getParameterUpperBound(0, enclosedType)
            val rawResultType = …
Run Code Online (Sandbox Code Playgroud)

android retrofit retrofit2 kotlin-coroutines retrofit2.6

8
推荐指数
2
解决办法
668
查看次数

okHttp3 java.lang.NoSuchMethodError: 没有虚拟方法 setCallWebSocket

我已经从 okhttp + retrofit 更新到 okhttp3 + retrofit2 但我的应用程序没有启动这个异常的原因

FATAL EXCEPTION: EventThread
Process: appli.speaky.com, PID: 14705
java.lang.NoSuchMethodError: No virtual method setCallWebSocket(Lokhttp3/Call;)V in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/data/appli.example.com/files/instant-run/dex/slice-okhttp-3.6.0_29bb10e5f590229716bfa8daf196d09ea67f56a8-classes.dex)
    at okhttp3.ws.WebSocketCall.enqueue(WebSocketCall.java:108)
    at io.socket.engineio.client.transports.WebSocket.doOpen(WebSocket.java:84)
    at io.socket.engineio.client.Transport$1.run(Transport.java:82)
    at io.socket.thread.EventThread.exec(EventThread.java:55)
    at io.socket.engineio.client.Transport.open(Transport.java:77)
    at io.socket.engineio.client.Socket.probe(Socket.java:472)
    at io.socket.engineio.client.Socket.onOpen(Socket.java:485)
    at io.socket.engineio.client.Socket.onHandshake(Socket.java:526)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:499)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:31)
    at io.socket.engineio.client.Socket$5.call(Socket.java:313)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:134)
    at io.socket.engineio.client.transports.Polling.access$700(Polling.java:17)
    at io.socket.engineio.client.transports.Polling$2.call(Polling.java:124)
    at io.socket.engineio.parser.Parser.decodePayload(Parser.java:251)
    at io.socket.engineio.client.transports.Polling._onData(Polling.java:134)
    at io.socket.engineio.client.transports.Polling.onData(Polling.java:106)
    at io.socket.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:111)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)

android okhttp

5
推荐指数
2
解决办法
6854
查看次数