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










0















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?










share|improve this question



















  • 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
















0















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?










share|improve this question



















  • 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














0












0








0








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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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













  • 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













1 Answer
1






active

oldest

votes


















0














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).






share|improve this answer























    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
    );



    );













    draft saved

    draft discarded


















    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









    0














    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).






    share|improve this answer



























      0














      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).






      share|improve this answer

























        0












        0








        0







        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).






        share|improve this answer













        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).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 11 at 16:18









        EpicPandaForceEpicPandaForce

        50.6k15134264




        50.6k15134264





























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme

            Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

            2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived