为什么这个 Volley jsonObjectRequest 在 AppWidgetProvider() 中不能正常工作?
Why is this Volley jsonObjectRequest not working properly in AppWidgetProvider()?
我成功地调用并接收了 json 数据...我没有收到任何错误...Logcat 正在显示正确的信息...我可以在外部硬编码 setTextViewsText请求...但是,我的城市 TextView 在此代码块中没有更改!
我已经为此苦苦挣扎了两天,我已经尝试了我能想到的一切以及我能在 Whosebug 上找到的一切。我对 Kotlin 和 Android 比较陌生,所以请保持温和。 ;)
val queue = Volley.newRequestQueue(context)
views.setTextViewText(R.id.city, "Some City") // this works
val jsonObjectRequest =
JsonObjectRequest(Request.Method.GET, url, null,
{ response ->
try {
val yourCity = response.getString("name")
views.setTextViewText(R.id.city, yourCity) // this doesn't work
Log.i("city", "Your City: $yourCity ")
} catch (e: JSONException) {
e.printStackTrace()
}
}
) { }
queue.add(jsonObjectRequest)
appWidgetManager.updateAppWidget(appWidgetId, views)
Logcat 显示:
I/city: Your City: Mountain View
清单包括:
<uses-permission android:name="android.permission.INTERNET" />
build.gradle:
dependencies {
...
implementation 'com.android.volley:volley:1.1.1'
...
}
你做得很好,但你必须在 views.setTextViewText(R.id.city, yourCity)
之后调用 updateAppWidget()
,以更新用户屏幕上的视图。