Android Studio中的Kotlin。 我试图改变按钮的文字,但我得到了“一个布尔types的值”消息。 我怎样才能解决这个问题? button11.setOnLongClickListener{ button11.text = “” }
大家早上好, 正如我正在学习Kotlin的Android开发,我现在正在尝试像Hello world这样的基本程序,以及如何从一个活动导航到另一个活动,这里没有问题 我的担心是当我从一个活动转移到另一个活动,它工作正常,但我不知道如何传递活动之间的值 我厌倦了在一个活动中设置值,并在另一个活动中检索到它不起作用 请参阅下面的代码片段 这是我的主要活动,我从编辑文本中将用户名和密码设置为意图 class MainActivity : AppCompatActivity() { val userName = null val password = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { val intent = Intent(this@MainActivity,SecondActivity::class.java); var userName = username.textø var password = password_field.text intent.putExtra(“Username”, userName) intent.putExtra(“Password”, password) startActivity(intent); } } } 这是我的第二个活动,我必须从主要活动接收价值 SecondActivity:AppCompatActivity(){ override fun onCreate(savedInstanceState: Bundle?) […]
这是我的kotlin代码: class Foo : Bar { override var onRefreshListener: (() -> Unit)? = null … } 这是我在java中试图做的事情: class A { private Foo foo; private void onRefreshStarted() {} private void problem() { foo.setOnRefreshListener(this::onRefreshStarted); foo.setOnRefreshListener(() -> onRefreshStarted()); } } 在这两种情况下在问题()我从Android Studio中得到以下错误: Function0不是一个function接口 我如何设置java的onRefreshListener?
我正在尝试使用Volley Library进行登录视图。 看来“jsonobj”总是空的。 val jsonobj = JSONObject() loginBtn.setOnClickListener { jsonobj.put(“mail”, mailTxt.text) jsonobj.put(“pass”, passTxt.text) val que = Volley.newRequestQueue(this@MainActivity) val req = JsonObjectRequest(Request.Method.POST, url, jsonobj, Response.Listener{ response -> toast(response[“error”].toString()) }, Response.ErrorListener { toast(“Error”) }) que.add(req) } } }
我有一个简单的问题:需要重新创建一个对象与其他参数。 有这个对象: object NetworkClient { var BASE_URL = “http://google.ru” //we can take this from another class or Pref’s const val API_BASE_URL = “$BASE_URL/api/” val httpClient = OkHttpClient.Builder() val client: Client var retrofit: Retrofit init { val builder = Retrofit.Builder() .baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) retrofit = builder.client(httpClient.build()).build() client = retrofit.create(Client::class.java) } } 在极少数情况下,您需要将BASE_URL动态更改为另一个字符串并重新创建客户端等。我知道如何做到这一点,但是我的解决方案非常辛苦 – 需要重新使用此类的所有地方,但是我希望创建此对象具体参数。 你如何看待这个问题?
我有一个可选的高阶函数(() – >单位)模型? 当我想要调用这个函数,我想知道,我怎么称呼它甚至是可选的。 我知道这个工程 model.action?.invoke() 有一些类似Swift的东西,我可以这样做: model.action?() 我知道,我也可以做: model.action?.let { action() } 也许这最后一个是“更好”的路要走。 你知道一些“更好”的方法吗? 谢谢
我正在尝试在Kotlin执行网络操作异步。 我读它可以做异步使用asyncfunction。 我得到下面的错误,谁能猜到可能是什么问题? 未解决的参考:异步 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) async() { val forecastWeather = ForecastRequest(“302015”).execute() Log.d(“Test”, forecastWeather.toString()) } } ForecastRequest.kt class ForecastRequest(val zipcode: String) { companion object { private val APP_ID = “XYZ” private val URL = “http://api.openweathermap.org/data/2.5/” + “forecast/daily?mode=json&units=metric&cnt=7” private val COMPLETE_URL = “$URL&APPID=$APP_ID&q=” } fun execute(): ForecastResponse { val forecastJsonStr = […]
尝试最简单的kotlin你好世界可能: thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ ll total 32 drwxr-xr-x 2 thufir thufir 4096 Oct 27 07:28 ./ drwx—— 46 thufir thufir 16384 Oct 27 06:47 ../ -rw-r–r– 1 thufir thufir 104 Oct 27 07:27 Hello.kt thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ kotlinc Hello.kt WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to constructor java.lang.String(char[],boolean) WARNING: […]
我之前在使用RxJava和Kotlin时遇到了一些问题。 我做了一些有趣的发现,我仍然感到困惑。 RxJava中有简单的Func1接口 public interface Func1 extends Function { R call(T t); } 我试图添加一个扩展方法到一个Observable ,也是一个RxJava类。 这将收集排放到谷歌Guava ImmutableListMulitmap使用Func1来映射每个项目的关键。 fun Observable.toImmutableListMultimap(keyMapper: Func1): Observable<ImmutableListMultimap> { return this.collect({ ImmutableListMultimap.builder()},{ b, t -> b.put(keyMapper.call(t), t)}).map { it.build() } } 当我试图调用这个扩展方法时,我无法编译它,它根本不理解lambdaexpression式。 ScheduledItem.all.flatMap { it.rebuildSoftTransactions } .toImmutableListMultimap { it.id /*compile error */ } .cache() 然而,当我修改扩展方法使用函数types时,发生了最奇怪的事情。 fun Observable.toImmutableListMultimap(keyMapper: (T) -> K): Observable<ImmutableListMultimap> { […]
我有一个实例方法buildHierarchyUncached的现有类,其签名可以在下面find。 private fun buildHierarchyUncached(date: LocalDate): Node { … } 我想提供一个公共函数 buildHiearchy,它是buildHierarchyUncached的memoized版本。 我可以接近我想要的东西: val buildHiearchy = Memoize({buildHierarchy(it)}) 这可以被称为像: hierarchyService.buildHiearchy(businessDate) 使用: class Memoize(val func: (I) -> O): (I) -> O{ val cache = hashMapOf(); override fun invoke(p1: I): O { return cache.getOrPut(p1, { func(p1) } ) } } 我希望能够将memoized函数声明为一个函数,而不是一个属性,虽然我认为它有助于可读性,但这不是一个大问题。 喜欢这个: fun buildHierarchy(date: LocalDate): Node = Memoize({ buildHierarchyUncached(it)}) […]