Blog-Sample-Android | A collection of android-samples posted on a blog | Android Architecture library
kandi X-RAY | Blog-Sample-Android Summary
kandi X-RAY | Blog-Sample-Android Summary
A collection of android-samples posted on a blog.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of Blog-Sample-Android
Blog-Sample-Android Key Features
Blog-Sample-Android Examples and Code Snippets
Community Discussions
Trending Discussions on Android Architecture
QUESTION
I've been following the UI architecture laid out in this article https://developer.android.com/jetpack/guide/ui-layer which essentially amounts to this:
It works great, but there is no example given in the article of how to pass events back from the UI elements to the ViewModel (in the case of an onclick event for example).
I have the following code in my MainActivity:
...ANSWER
Answered 2022-Mar-26 at 18:20It gets into it further down in the section on unidirectional data flow - or there's a separate article on events (you're looking at the overview page)
This is the example they use:
QUESTION
Let's say I have this architecture in my app
My question is when is the best time to handle the error?
- Should I let the network source and cache source throw an error, and we handle all the possible error in the repository layer
- Should I handle the error in the framework-specific, and return a sealed class that present is the network call error or success
ANSWER
Answered 2021-Feb-18 at 07:21Depends on the use case
- If user is expecting data, then you need to send the errors all the way to your
UI
to notify user to make sure user won't just see a blank screen or experience unexpected UI. You can sealed classes in Kotlin for this case. - If you are fetching something which user is not aware of, like syncing data from remote to Local cache in background, In cases like this user is not aware/ do not care about errors, your app should handle. Ideal way is to check in handle error in repository, if something fails, retrying it there or fetching data from alternate source etc.
- Third case would be handling at multiple levels, say you are fetching data from network, it failed, you can handle retry logic in repository level and after you exhaust your retry attempts but still it is failing then you need to acknowledge user as he might be expecting some thing to show up.
QUESTION
I have an application that needs to collect some data before doing it's main job. So, the first fragment collects data, the second fragment collects data and then the third fragment uses the data. The problem is: data in the first fragment is uncorrelated to the data I collect in the second fragment. How can I pass the data from the first fragment to the third? Should I incrementally pass all the data I collect in the next fragment arguments, or should I store them elsewhere? I'd really like to know what the best practice is.
I won't use a database, since I don't need to permanently store the data. Thank you!
...ANSWER
Answered 2020-Nov-30 at 10:01As for any best practices, the best answer is "it depends".
If your app is really small and simple then it's okay to pass data from one screen to another in the arguments bundle.
A more complex approach is to store data somewhere outside of these Fragment
lifecycles.
It's a general rule you can implement as you want. A couple of examples below:
- Data can be stored on
Application
class level.Application
class runs for all application lifecycle. Every fragment can getApplication
instance from its activity likeactivity?.getApplication()
. - Data can be stored on
Activity
level if all fragments run in a single activity.Activity
can be obtained fromFragment
usingactivity
orrequireActivity()
. - Data can be stored on a parent fragment level if all fragments run in this parent fragment. It can be obtained from child fragments using
parentFragment
.
All these approaches suppose you to cast some "parent" thing to specific interface or implementation. For example, if your fragments run in the MainActivity
which is stores some val data: Data
as its property, then you should use it something like this: (requireActivity() as MainActivity).data
Clarification on a couple of popular answers:
- The
Shared ViewModel
is just a special case of activity-level approach asViewModel
instance is stored inActivity
scope. - The
SharedPrefrences
like any "database" approach is a special case of application-level approach as SharedPreferences is stored on application-level (in the file storage) no matter where you create its instance. (And SharedPreferences persists data across application starts, so it's not your option)
QUESTION
TLDR: How could I properly implement an MVVM architecture with LiveData?
I have a fragment class that observe a viewModel exposed livedata:
viewModel.loginResultLiveData.observe ...ANSWER
Answered 2020-Jan-18 at 00:46You are trying to observe a mutable LiveData that is only initialized after the onClickListener
so you won't get it to work, also you have a lateinit
property that is only initialized if you call the login method which will throw an exception.
To solve your problem you can have a MediatorLiveData
that will observe your other live data and pass the result back to your fragment observer.
You can try the following:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install Blog-Sample-Android
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page