我的资产文件夹中有一个JSON文件.该文件有一个带有数组的对象.该阵列有150多个对象,每个对象有三个字符串.
对于这150多个对象中的每一个,我想提取每个字符串并创建一个java模型对象,并传递三个字符串.我在android JSON解析中找到的所有教程都是从我不想做的url中获取JSON.
第一张图片是我的Netbeans IDE.正如您在文本光标放在变量上时所看到的那样,该变量会在出现的任何其他位置突出显示.我发现此功能非常有用,并希望在Android Studio上启用它(第二张图片).
我有这个片段,它在检索数据时充当启动屏幕。问题是,在配置更改时或者如果 Fragment 位于屏幕外(用户导航出应用程序),当它从 IO 协程块返回并尝试在主协程块中执行导航时,它会崩溃。
这是代码:
注意:viewModel.repository.initData()如果数据不存在或过时,则进行 Retrofit 调用并将响应保留到 Room 数据库。
class LoadingFragment : Fragment() {
private lateinit var viewModel: LoadingViewModel
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_loading, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(this).get(LoadingViewModel::class.java)
CoroutineScope(Dispatchers.IO).launch {
// Small delay so the user can actually see the splash screen
// for a moment as feedback of an attempt to retrieve data.
delay(250)
try {
viewModel.repository.initData() …Run Code Online (Sandbox Code Playgroud) 我的代码:
<Button
android:id="@+id/button_one"
style="@style/ButtonStyle"
android:text="@string/button_one" />
Run Code Online (Sandbox Code Playgroud)
<style name="ButtonStyle">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@drawable/background_button_text_color</item>
<item name="android:background">@drawable/background_button</item
</style>
Run Code Online (Sandbox Code Playgroud)
背景按钮.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_pressed="true" />
<item android:drawable="@android:color/transparent" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
背景_按钮_文本_颜色.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_pressed="true" />
<item android:color="@android:color/white" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

当按下按钮时,我得到的是黑色背景而不是白色。不确定我做错了什么。有什么帮助吗?
我正在1.2.0-alpha06使用并使用Theme.MaterialComponents.DayNight.NoActionBar.
android android-styles material-design material-components material-components-android
这是我的代码。
class Repository(context: Context) {
// Can access 'context' from here
val mSharedPrefsProperties = context
.getSharedPreferences(context.packageName.plus(".properties"), Context.MODE_PRIVATE)
// Can't access 'context' in this function (unresolved reference: context)
private fun getApiKey(): String {
val apiKeys = context.resources.getStringArray(R.array.api_keys)
val random = Random().nextInt(apiKeys.size)
return apiKeys[random]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从函数内部的构造函数访问属性,还是需要将它们设为实例/局部变量?
当我尝试使用以下方法划分 BigDecimals 时:
divide(divisor, RoundingMode.HALF_UP)
它返回 0
但是,如果我没有这样的舍入模式就这样做:
divide(divisor)
我得到一个 ArithmeticException
我不在乎数字是否不是精确的十进制表示。如何在不得到 0 或异常的情况下划分 BigDecimals?
android ×5
kotlin ×2
bigdecimal ×1
constructor ×1
division ×1
double ×1
java ×1
json ×1
material-components-android ×1
netbeans ×1
rounding ×1
scope ×1