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 […]
Kotlin
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.
How to start using view binding //Android Kotlin Dev Diary
First, open your app/build.gradle file Inside the android{} block of app/build.gradle, add the following: buildFeatures { viewBinding = true } Sync project with gradle files. In your activity or fragment, define the following class-wide property:
1 |
private lateinit var binding: <strong>FragmentorActivityNameBinding</strong> |
Replace the FragmentorActivityNameBinding above with the appropriate binding class name. Tip: The binding class name is based on the […]
Disable animations programmatically during instrumented tests // Android Dev Diary
When running an instrumented Android test, or “androidTest”, and you encounter the following error: It means that you need to disable animations for it to successfully run the test. But, it can take a lot of clicks on the emulator/device screen to get to the developer settings to turn off animations! So, for a quicker […]
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 […]
Two NavHosts with their own NavControllers and NavGraphs (Navigation Component) //Android Kotlin Dev Diary
I am trying to make a single-activity app because I’d like to easily share data across screen using, ideally one, or as few as possible ViewModels. NavGraph 1 Host: Layout file of MainActivity Destination(s): CreateLogFragment NavGraph 2 Host: Layout file of CreateLogFragment Destination(s): CreateLogFoodFragment, CreateLogNotesFragment (CreateLogFragment has a BottomNavigationBar that switches between CreateLogFoodFragment and CreateLogNotesFragment) […]
val vs. const //Kotlin Android Dev Diary
Let’s start off by introducing val. To define a variable in Kotlin, you may use var or val: var val has a mutable value (changeable) has an immutable value (read-only) So we use val for immutable values, so what is the const keyword and what’s its difference from val? const val has an immutable value […]
Error inflating class androidx.fragment.app.FragmentContainerView // Android Kotlin Dev Diary
The cause of error in Logcat: The fix was to add a startDestination to <navigation> tag in the nav_graph.xml.
Sample Instrumented Test for Retained Text After Screen Rotation // Android Kotlin Dev Diary
First I added the following UI Automator to my app: So now my build.gradle (Module) file has the following dependecies: Then under the package app/src/androidTest/java/net/catzie/samplecalculatorapp I added the following instrumented test class: What it does is press the buttons 1, period, and 5 on the calculator’s UI to show “1.5” which should show up the […]