当前位置: 首页 > 知识库问答 >
问题:

Volley:从JavaCode调用Kotlin类

朱经武
2023-03-14
fun POST(vararg params: Pair<String, Any>) {
    // HashMap to pass arguments to Volley
    val hashMap = HashMap<String, String>()
    params.forEach {
        // Convert all Any type to String and add to HashMap
        hashMap[it.first] = it.second.toString()
    }
    // Make the Http Request
    makeRequest(Request.Method.POST, hashMap)
}

private fun makeRequest(method: Int, params: HashMap<String, String>) {
    // Creating a StringRequest
    val req = object : StringRequest(method, url, { res ->

        // Creating JSON object from the response string
        // and passing it to result: (JSONObject) -> Unit function
        result(JSONObject(res.toString().trim()))
    }, { volleyError ->

        // Getting error message and passing it
        // to val error: (String) -> Unit function
        error(volleyError.message!!)
    }) {
        // Overriding getParams() to pass our parameters
        override fun getParams(): MutableMap<String, String> {
            return params
        }
    }

    // Adding request to the queue
    volley.add(req)
}

// For using Volley RequestQueue as a singleton
// call WolfRequest.init(applicationContext) in
// app's Application class
companion object {
    var context: Context? = null
    val volley: RequestQueue by lazy {
        Volley.newRequestQueue(context
                ?: throw NullPointerException(" Initialize WolfRequest in application class"))
    }

    fun init(context: Context) {
        this.context = context
    }
}
    WolfRequest.Companion.init(getApplicationContext());
    HashMap <String, String> params = new HashMap <> ();
    params.put("id", "123");

    new WolfRequest(config.PING_EVENTS,*new WolfRequest()*
    {

        public void response(JSONObject response) {
            Log.e("Ping","PING");
        }

        public void error(String error) {
            Log.e("Ping",error);
        }
    }).POST(params);

谢谢。

共有1个答案

闽阳州
2023-03-14
new WolfRequest("", (s) -> Unit.INSTANCE, (s) -> Unit.INSTANCE){
....
}
 类似资料:
  • 例外情况。kt: 在科特林: 它在kotlin中工作,函数是内联的。 但是当在Java代码中使用时,它就是不能内联,仍然是一个正常的静态方法调用(从反编译的内容中可以看出)。 像这样的东西:

  • 我有一个用kotlin编写的库,我想在Java程序中使用它,但我不知道如何正确调用异步方法。 在Java中,我必须向函数传递什么参数?IntelliJ说我需要这样的东西:

  • 这段代码适用于Java。但是在迁移到Kotlin之后,编译器higlits方法出现以下文本错误: Andswer是: 如果希望在另一个类中使用这个本机函数,可以指定包含它的类,如下所示:

  • 我的目标是用一种非常简洁、模块化的方式从另一个类调用凌空: 但是我很难让侦听器部分工作,以便能够访问来自以下方法的结果数据

  • Volley 是一个 Java 网络队列,支持队列请求和优先级。Volley 在加载图片上并不是特别高效,因为它会将所有收到的数据都拷贝到字节数组中。尽管 Volley 试图重用这些字节数组,它对于中等或大图的回收复用率相对比较低。这样的结果是,Volley 用于 Glide 一起用于加载图片时,可能导致大量的内存抖动。当然,如果一个应用已经用了 Volley ,它仍然还是一个比较合适的选择,因为

  • 我已经在Kotlin工作了几个月,我开始制作库,就像我在java源代码中做的那样,而且工作得很好。但是,我有一个很大的问题与这些库,我不能调试他们(而我从来没有问题的java的)。当我进入消息来源时,我唯一拥有的是: 我尝试了很多方法,比如在gradle文件中添加源集,在gradle中创建任务来查找源并将它们附加到JAR/AAR以及其他一些我不记得的事情,但绝对没有效果。 我的问题是:编译kotl