Ishita Sinha Ishita Sinha - 1 year ago 74
Android Question

Android: Opening a Fragment from another

I am new to Android and this is my second app. I am creating a tabbed activity where the first fragment has a form to create a new task, the second fragment has the list of all the saved tasks, and the third fragment will show the comments on a task when selected from the list in the second fragment. The third fragment is also supposed to act like a chat activity which posts comments when you type them in and tap the send button. When I implement this chat activity from a separate

in the GitHub branch in the link below), the app runs absolutely as it is supposed to. However, when I try to implement the same code from the third
, I have the following problems:

  • I have to tap the list item (in
    ) twice before the
    is launched.

  • The fragment remains blank and shows no details or comments.

  • The title bar is messed up. It does set the title correctly when
    is launched for the first time. However, it becomes blank subsequently, when I swipe between the fragments . Sometimes it even shows the title of the last open fragment instead of the one currently open.

You can find all my code here:

Other details: I am passing the data between the
and the
with fragment interaction methods that interact with the main activity--
. This is the only way I know of. If there is a better way, please let me know.

Answer Source

Here is how I solved it. Since I was using a ViewPager, using FragmentTransaction as below did not work:

Wrong way:

    FragmentManager fm = getSupportFragmentManager(); ft = fm.beginTransaction();
    CommentsFragment commentsFragment = CommentsFragment.newInstance(mTaskId, mTaskName);
    ft.replace(, commentsFragment);

With the ViewPager, I had to update the adapter populating it and then set it to the correct fragment. This is what I did:

Right way:

In the onListItemClick() in the TasksFragment, I call this interface method onFragmentInteraction. And then in the main activity AddTask, I implement it as below:

public void onFragmentInteraction(String taskId, String taskName, String assigneeRef) { 
    CommentsFragment commentsFragment = CommentsFragment.newInstance(taskId, taskName);

Hope this helps someone else who faces a problem with updating Fragments inside a ViewPager.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download