Send data to one activity's fragment from another activity? The Next CEO of Stack OverflowStop EditText from gaining focus at Activity startupHow do I pass data between Activities in Android application?How to send an object from one Android Activity to another using Intents?Dilemma: when to use Fragments vs Activities:LiveData Object keeps being null after getValue() is calledList<> from Room Database is always nullViewModel, Room, LiveData, RecyclerView filter dataNo Data with RecyclerView, Data Binding and ViewModelList of One-to-Many Entities shows temporary entity from another ActivityTwo-way Data Binding, RecyclerView, ViewModel, Room, LiveData, Oh My
What connection does MS Office have to Netscape Navigator?
How to count occurrences of text in a file?
Is it my responsibility to learn a new technology in my own time my employer wants to implement?
Method for adding error messages to a dictionary given a key
Would a grinding machine be a simple and workable propulsion system for an interplanetary spacecraft?
Why isn't the Mueller report being released completely and unredacted?
Does soap repel water?
Is the D&D universe the same as the Forgotten Realms universe?
Is there always a complete, orthogonal set of unitary matrices?
How did people program for Consoles with multiple CPUs?
Prepend last line of stdin to entire stdin
Is it okay to majorly distort historical facts while writing a fiction story?
Why isn't acceleration always zero whenever velocity is zero, such as the moment a ball bounces off a wall?
Legal workarounds for testamentary trust perceived as unfair
Calculator final project in Python
Why do remote US companies require working in the US?
Make solar eclipses exceedingly rare, but still have new moons
A small doubt about the dominated convergence theorem
How to prove a simple equation?
WOW air has ceased operation, can I get my tickets refunded?
Easy to read palindrome checker
Is wanting to ask what to write an indication that you need to change your story?
The exact meaning of 'Mom made me a sandwich'
Which one is the true statement?
Send data to one activity's fragment from another activity?
The Next CEO of Stack OverflowStop EditText from gaining focus at Activity startupHow do I pass data between Activities in Android application?How to send an object from one Android Activity to another using Intents?Dilemma: when to use Fragments vs Activities:LiveData Object keeps being null after getValue() is calledList<> from Room Database is always nullViewModel, Room, LiveData, RecyclerView filter dataNo Data with RecyclerView, Data Binding and ViewModelList of One-to-Many Entities shows temporary entity from another ActivityTwo-way Data Binding, RecyclerView, ViewModel, Room, LiveData, Oh My
I have MainActivity which contains TabLayout with tabs: each tab is a fragment and each one has a RecyclerView. When I tap FAB in Main Activity, NewReminderActivity is opened.
I use Architecture Components: Entity(Reminder), DAO, Room, ViewModel, LiveData and Repository.
The question is:
- Which methods should I use to deliver a new created reminder item into the fragment (which contains as mentioned above a RecyclerView?
I have some ideas, but could you help me please and give me a right direction for implementing:
1) I guess, I should deliver data to MainActivity, then from MainActivity to the fragment and use ViewModel as mentioned in https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing , am I right?
2) I guess I should use setResult() in NewReminderActivity, am I right?
android mvvm android-room android-livedata android-viewmodel
add a comment |
I have MainActivity which contains TabLayout with tabs: each tab is a fragment and each one has a RecyclerView. When I tap FAB in Main Activity, NewReminderActivity is opened.
I use Architecture Components: Entity(Reminder), DAO, Room, ViewModel, LiveData and Repository.
The question is:
- Which methods should I use to deliver a new created reminder item into the fragment (which contains as mentioned above a RecyclerView?
I have some ideas, but could you help me please and give me a right direction for implementing:
1) I guess, I should deliver data to MainActivity, then from MainActivity to the fragment and use ViewModel as mentioned in https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing , am I right?
2) I guess I should use setResult() in NewReminderActivity, am I right?
android mvvm android-room android-livedata android-viewmodel
1
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10
add a comment |
I have MainActivity which contains TabLayout with tabs: each tab is a fragment and each one has a RecyclerView. When I tap FAB in Main Activity, NewReminderActivity is opened.
I use Architecture Components: Entity(Reminder), DAO, Room, ViewModel, LiveData and Repository.
The question is:
- Which methods should I use to deliver a new created reminder item into the fragment (which contains as mentioned above a RecyclerView?
I have some ideas, but could you help me please and give me a right direction for implementing:
1) I guess, I should deliver data to MainActivity, then from MainActivity to the fragment and use ViewModel as mentioned in https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing , am I right?
2) I guess I should use setResult() in NewReminderActivity, am I right?
android mvvm android-room android-livedata android-viewmodel
I have MainActivity which contains TabLayout with tabs: each tab is a fragment and each one has a RecyclerView. When I tap FAB in Main Activity, NewReminderActivity is opened.
I use Architecture Components: Entity(Reminder), DAO, Room, ViewModel, LiveData and Repository.
The question is:
- Which methods should I use to deliver a new created reminder item into the fragment (which contains as mentioned above a RecyclerView?
I have some ideas, but could you help me please and give me a right direction for implementing:
1) I guess, I should deliver data to MainActivity, then from MainActivity to the fragment and use ViewModel as mentioned in https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing , am I right?
2) I guess I should use setResult() in NewReminderActivity, am I right?
android mvvm android-room android-livedata android-viewmodel
android mvvm android-room android-livedata android-viewmodel
edited Mar 11 at 16:04
EpicPandaForce
50.6k15134264
50.6k15134264
asked Mar 8 at 16:16
Вячеслав БорисовскийВячеслав Борисовский
122
122
1
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10
add a comment |
1
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10
1
1
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10
add a comment |
1 Answer
1
active
oldest
votes
If you are using Room, there is no reason for you to use setResult
to transfer new item to any of these previous Fragments/Activities, because Room manages invalidation automatically.
@Dao
public interface MyDao
@Query("SELECT * FROM ITEM")
LiveData<List<Item>> getItemsWithChanges();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(Item item);
Then
public class MyViewModel extends ViewModel
private final LiveData<List<Item>> items;
public LiveData<List<Item>> getItems()
return items;
public MyViewModel(MyDao myDao)
items = myDao.getItemsWithChanges();
Then
public class MyFragment extends Fragment
MyViewModel myViewModel;
@Override
protected void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
myViewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyViewModel.class);
myViewModel.getItems().observe(getViewLifecycleOwner(), (items) ->
if(items != null)
adapter.submitList(items);
);
In which case all you need to do in your second Activity is insert the new item, then finish out:
// imagine this is on background thread
myDao.insertItem(item);
runOnUiThread(() ->
finish();
);
And all your RecyclerViews will update with the new item (if they are part of the results as the condition matches it).
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55067040%2fsend-data-to-one-activitys-fragment-from-another-activity%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you are using Room, there is no reason for you to use setResult
to transfer new item to any of these previous Fragments/Activities, because Room manages invalidation automatically.
@Dao
public interface MyDao
@Query("SELECT * FROM ITEM")
LiveData<List<Item>> getItemsWithChanges();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(Item item);
Then
public class MyViewModel extends ViewModel
private final LiveData<List<Item>> items;
public LiveData<List<Item>> getItems()
return items;
public MyViewModel(MyDao myDao)
items = myDao.getItemsWithChanges();
Then
public class MyFragment extends Fragment
MyViewModel myViewModel;
@Override
protected void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
myViewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyViewModel.class);
myViewModel.getItems().observe(getViewLifecycleOwner(), (items) ->
if(items != null)
adapter.submitList(items);
);
In which case all you need to do in your second Activity is insert the new item, then finish out:
// imagine this is on background thread
myDao.insertItem(item);
runOnUiThread(() ->
finish();
);
And all your RecyclerViews will update with the new item (if they are part of the results as the condition matches it).
add a comment |
If you are using Room, there is no reason for you to use setResult
to transfer new item to any of these previous Fragments/Activities, because Room manages invalidation automatically.
@Dao
public interface MyDao
@Query("SELECT * FROM ITEM")
LiveData<List<Item>> getItemsWithChanges();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(Item item);
Then
public class MyViewModel extends ViewModel
private final LiveData<List<Item>> items;
public LiveData<List<Item>> getItems()
return items;
public MyViewModel(MyDao myDao)
items = myDao.getItemsWithChanges();
Then
public class MyFragment extends Fragment
MyViewModel myViewModel;
@Override
protected void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
myViewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyViewModel.class);
myViewModel.getItems().observe(getViewLifecycleOwner(), (items) ->
if(items != null)
adapter.submitList(items);
);
In which case all you need to do in your second Activity is insert the new item, then finish out:
// imagine this is on background thread
myDao.insertItem(item);
runOnUiThread(() ->
finish();
);
And all your RecyclerViews will update with the new item (if they are part of the results as the condition matches it).
add a comment |
If you are using Room, there is no reason for you to use setResult
to transfer new item to any of these previous Fragments/Activities, because Room manages invalidation automatically.
@Dao
public interface MyDao
@Query("SELECT * FROM ITEM")
LiveData<List<Item>> getItemsWithChanges();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(Item item);
Then
public class MyViewModel extends ViewModel
private final LiveData<List<Item>> items;
public LiveData<List<Item>> getItems()
return items;
public MyViewModel(MyDao myDao)
items = myDao.getItemsWithChanges();
Then
public class MyFragment extends Fragment
MyViewModel myViewModel;
@Override
protected void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
myViewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyViewModel.class);
myViewModel.getItems().observe(getViewLifecycleOwner(), (items) ->
if(items != null)
adapter.submitList(items);
);
In which case all you need to do in your second Activity is insert the new item, then finish out:
// imagine this is on background thread
myDao.insertItem(item);
runOnUiThread(() ->
finish();
);
And all your RecyclerViews will update with the new item (if they are part of the results as the condition matches it).
If you are using Room, there is no reason for you to use setResult
to transfer new item to any of these previous Fragments/Activities, because Room manages invalidation automatically.
@Dao
public interface MyDao
@Query("SELECT * FROM ITEM")
LiveData<List<Item>> getItemsWithChanges();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertItem(Item item);
Then
public class MyViewModel extends ViewModel
private final LiveData<List<Item>> items;
public LiveData<List<Item>> getItems()
return items;
public MyViewModel(MyDao myDao)
items = myDao.getItemsWithChanges();
Then
public class MyFragment extends Fragment
MyViewModel myViewModel;
@Override
protected void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
myViewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyViewModel.class);
myViewModel.getItems().observe(getViewLifecycleOwner(), (items) ->
if(items != null)
adapter.submitList(items);
);
In which case all you need to do in your second Activity is insert the new item, then finish out:
// imagine this is on background thread
myDao.insertItem(item);
runOnUiThread(() ->
finish();
);
And all your RecyclerViews will update with the new item (if they are part of the results as the condition matches it).
answered Mar 11 at 16:18
EpicPandaForceEpicPandaForce
50.6k15134264
50.6k15134264
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55067040%2fsend-data-to-one-activitys-fragment-from-another-activity%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I think a cleaner way would be to update the data first from NewReminderActivityViewModel to your Room database .Also subscribe your MainActivity's Fragments to listen to changes in Room database which will then automatically update your RecyclerView . MainActivity <-> MainActivityViewModel <-> Room Database NewReminderActivity <-> NewReminderActivityViewModel <-> RoomDatabase Would be glad to discuss on this further
– Ayush Bansal
Mar 10 at 19:10