Fixing fragment instance restore

This commit is contained in:
Ernir Erlingsson
2016-06-13 23:06:38 +02:00
parent 192ee41600
commit 8a29207bd0
20 changed files with 213 additions and 205 deletions

View File

@@ -13,6 +13,7 @@ import android.view.View;
import android.view.ViewGroup;
import org.briarproject.R;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.contact.BaseContactListAdapter;
import org.briarproject.android.contact.ContactListItem;
import org.briarproject.android.fragment.BaseFragment;
@@ -64,15 +65,18 @@ public class ContactSelectorFragment extends BaseFragment implements
protected volatile GroupId groupId;
public void initBundle(GroupId groupId) {
Bundle bundle = new Bundle();
bundle.putByteArray(GROUP_ID, groupId.getBytes());
setArguments(bundle);
public static ContactSelectorFragment newInstance(GroupId groupId) {
Bundle args = new Bundle();
args.putByteArray(GROUP_ID, groupId.getBytes());
ContactSelectorFragment fragment = new ContactSelectorFragment();
fragment.setArguments(args);
return fragment;
}
@Inject
public ContactSelectorFragment() {
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
@Override

View File

@@ -14,6 +14,7 @@ import android.view.View;
import android.view.ViewGroup;
import org.briarproject.R;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.fragment.BaseEventFragment;
import org.briarproject.android.util.BriarRecyclerView;
import org.briarproject.api.db.DbException;
@@ -59,9 +60,13 @@ public class ForumListFragment extends BaseEventFragment implements
@Inject protected volatile ForumManager forumManager;
@Inject protected volatile ForumSharingManager forumSharingManager;
@Inject
public ForumListFragment() {
public static ForumListFragment newInstance() {
Bundle args = new Bundle();
ForumListFragment fragment = new ForumListFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@@ -96,6 +101,11 @@ public class ForumListFragment extends BaseEventFragment implements
return TAG;
}
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
@Override
public void onResume() {
super.onResume();

View File

@@ -15,6 +15,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
// TODO extend the BriarFragmentActivity ?
public class ShareForumActivity extends BriarActivity implements
BaseFragment.BaseFragmentListener {
@@ -33,8 +34,7 @@ public class ShareForumActivity extends BriarActivity implements
if (savedInstanceState == null) {
ContactSelectorFragment contactSelectorFragment =
activityComponent.newContactSelectorFragment();
contactSelectorFragment.initBundle(groupId);
ContactSelectorFragment.newInstance(groupId);
getSupportFragmentManager().beginTransaction()
.add(R.id.shareForumContainer, contactSelectorFragment)
.commit();
@@ -50,8 +50,7 @@ public class ShareForumActivity extends BriarActivity implements
Collection<ContactId> contacts) {
ShareForumMessageFragment messageFragment =
activityComponent.newShareForumMessageFragment();
messageFragment.initBundle(groupId, contacts);
ShareForumMessageFragment.newInstance(groupId, contacts);
getSupportFragmentManager().beginTransaction()
.setCustomAnimations(android.R.anim.fade_in,
@@ -86,7 +85,7 @@ public class ShareForumActivity extends BriarActivity implements
// turn contact integers from a bundle back to ContactIds
List<ContactId> contacts = new ArrayList<>(intContacts.size());
for(Integer c : intContacts) {
for (Integer c : intContacts) {
contacts.add(new ContactId(c));
}
return contacts;
@@ -102,4 +101,9 @@ public class ShareForumActivity extends BriarActivity implements
// this is handled by the recycler view in ContactSelectorFragment
}
@Override
public void onFragmentCreated(String tag) {
}
}

View File

@@ -12,6 +12,7 @@ import android.widget.EditText;
import android.widget.Toast;
import org.briarproject.R;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.fragment.BaseFragment;
import org.briarproject.api.contact.ContactId;
import org.briarproject.api.db.DbException;
@@ -46,16 +47,13 @@ public class ShareForumMessageFragment extends BaseFragment {
private volatile GroupId groupId;
private volatile Collection<ContactId> contacts;
public void initBundle(GroupId groupId, Collection<ContactId> contacts) {
Bundle bundle = new Bundle();
bundle.putByteArray(GROUP_ID, groupId.getBytes());
bundle.putIntegerArrayList(CONTACTS, getContactsFromIds(contacts));
setArguments(bundle);
}
@Inject
public ShareForumMessageFragment() {
public static ShareForumMessageFragment newInstance(GroupId groupId, Collection<ContactId> contacts) {
Bundle args = new Bundle();
args.putByteArray(GROUP_ID, groupId.getBytes());
args.putIntegerArrayList(CONTACTS, getContactsFromIds(contacts));
ShareForumMessageFragment fragment = new ShareForumMessageFragment();
fragment.setArguments(args);
return fragment;
}
@Override
@@ -119,6 +117,11 @@ public class ShareForumMessageFragment extends BaseFragment {
return TAG;
}
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
public void onButtonClick() {
// disable button to prevent accidental double invitations
ui.button.setEnabled(false);