I should blog more often about things I learn about. In a native Android app written in Kotlin, I have a LifecycleService class with below code to send a broadcast: Based on the logcat, the broadcast is being sent. However, below BroadcastReceiver in an Activity doesn’t receive the broadcast, even while it is visible: The […]
programming
Run command automatically after updating a file on Mac
I get a kick out of automating things! Especially those seemingly easy extra steps that we do numerous times a day, everyday. There’s this configuration file that I frequently have to adb push into my test Android devices. And the cycle of editing the file, saving it, and then going to the terminal to run […]
Make a RecyclerView expand its height when new item is added //Android Dev Diary
It seems that simply using android:layout_height=”wrap_content” on your RecyclerView won’t make its height automatically expand when new items are added in it.
Exception: No signature of method android() is applicable for argument types, Build Gradle // Dev Diary
Today I wanted to make a data class a Parcelable so that I could pass it as an argument in Navigation component. Parcelables, though better in performance than Serializables, take more time to implement! To help us out, there’s a “kotlin-parcelize” plugin that can generate the boilerplate code for us. There were issues though. After […]
Two-way data binding with StateFlow & BindingAdapters //Dev Diary
I created BindingAdapters for an EditText like so: My XML layout element looks like this: And in my ViewModel, the inputAmount is set up this way:
Fix coroutine error: Cannot access database on the main thread // Android Dev Diary
As I was running a test for a ViewModel function, I encountered the following error: […] Main Thread @coroutine java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time. I think it may be caused by the viewModelScope from viewModelScope.launch {} being used by […]
Grant, revoke permissions via Android Studio Terminal (ADB Shell) // Android Dev Diary
To grant and revoke permissions via Terminal (ADB Shell), run your app on an emulator (I haven’t personally tried on a device but it should work there too). Open your Terminal, and then enter the following command: adb shell Once you’re in, you may use the following syntax for granting or revoking your Android device’s […]
My Fave Android Studio Keyboard Shortcuts
I have been working on small Android apps, and I just want to share some of my favorite keyboard shortcuts. Some of them were manually added by me. Keyboard shortcuts are one of my must-haves for productivity as a programmer, as they let me navigate through code faster, allowing me to focus on creating new […]
Dao Error: Not sure how to handle query method’s return type //Android Kotlin Dev Diary
As I brush up on my Room database knowlege I came upon the following error while building my app:
|
1 |
WordDao.java:21: error: Not sure how to handle query method's return type (java.lang.Object). DELETE query methods must either return void or int (the number of deleted rows). |
The solution: Set Kotlin version to 1.6.10 then Room to 2.4.2 (Or use more recent compatible versions) in my top-level build.gradle file. Reference: Android Room Kotlin throws Delete Query error
Error: Type mismatch. Required: ActivityMainBinding. Found: ViewDataBinding! //Android Kotlin Dev Diary
The problem is that this line of code is producing an error: And the error says: Type mismatch.Required:ActivityMainBindingFound:ViewDataBinding! The solution is to add a <layout> tag in the layout file that you are inflating!