From 9ce73a68403520bba570b4d9f8f570142d85ec4e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 18 Dec 2018 18:01:04 -0200 Subject: [PATCH] [android] inject fragments already in onAttach() This also removes the need to override the inject method even when there's nothing to inject. While passing over all fragments, some nullability issues also have been addressed. --- .../android/activity/ActivityComponent.java | 12 ------ .../briar/android/activity/BaseActivity.java | 22 +++++------ .../briar/android/blog/BasePostFragment.java | 7 +++- .../briar/android/blog/BlogFragment.java | 27 +++++++------ .../briar/android/blog/FeedFragment.java | 16 ++++---- .../briar/android/blog/FeedPostFragment.java | 14 +++---- .../briar/android/blog/ReblogFragment.java | 21 ++++------ .../android/contact/ContactListFragment.java | 4 +- .../BaseContactSelectorFragment.java | 7 ++-- .../conversation/AliasDialogFragment.java | 39 ++++++++----------- .../android/forum/ForumListFragment.java | 15 +++---- .../briar/android/fragment/BaseFragment.java | 17 ++++---- .../briar/android/fragment/ErrorFragment.java | 6 --- .../introduction/ContactChooserFragment.java | 29 +++++++------- .../IntroductionMessageFragment.java | 32 ++++++++------- .../ContactExchangeErrorFragment.java | 10 ++--- .../android/keyagreement/IntroFragment.java | 6 --- .../keyagreement/KeyAgreementFragment.java | 4 +- .../android/login/AuthorNameFragment.java | 13 ++++--- .../briar/android/login/DozeFragment.java | 13 ++++--- .../briar/android/login/PasswordFragment.java | 24 ++++++------ .../briar/android/login/SetupFragment.java | 6 ++- .../briar/android/logout/SignOutFragment.java | 13 +++---- .../creation/CreateGroupFragment.java | 19 +++++---- .../creation/CreateGroupMessageFragment.java | 10 ++--- .../creation/GroupInviteFragment.java | 12 +++--- .../privategroup/list/GroupListFragment.java | 19 ++++----- .../android/sharing/BaseMessageFragment.java | 2 +- .../sharing/ShareBlogMessageFragment.java | 17 ++++---- .../sharing/ShareForumMessageFragment.java | 16 ++++---- 30 files changed, 219 insertions(+), 233 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java index 8a5c6a695..7fc324989 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java @@ -31,7 +31,6 @@ import org.briarproject.briar.android.introduction.IntroductionActivity; import org.briarproject.briar.android.introduction.IntroductionMessageFragment; import org.briarproject.briar.android.keyagreement.ContactExchangeActivity; import org.briarproject.briar.android.keyagreement.ContactExchangeErrorFragment; -import org.briarproject.briar.android.keyagreement.IntroFragment; import org.briarproject.briar.android.keyagreement.KeyAgreementActivity; import org.briarproject.briar.android.keyagreement.KeyAgreementFragment; import org.briarproject.briar.android.login.AuthorNameFragment; @@ -49,7 +48,6 @@ import org.briarproject.briar.android.privategroup.conversation.GroupActivity; import org.briarproject.briar.android.privategroup.conversation.GroupConversationModule; import org.briarproject.briar.android.privategroup.creation.CreateGroupActivity; import org.briarproject.briar.android.privategroup.creation.CreateGroupFragment; -import org.briarproject.briar.android.privategroup.creation.CreateGroupMessageFragment; import org.briarproject.briar.android.privategroup.creation.CreateGroupModule; import org.briarproject.briar.android.privategroup.creation.GroupInviteActivity; import org.briarproject.briar.android.privategroup.creation.GroupInviteFragment; @@ -70,10 +68,8 @@ import org.briarproject.briar.android.sharing.ForumInvitationActivity; import org.briarproject.briar.android.sharing.ForumSharingStatusActivity; import org.briarproject.briar.android.sharing.ShareBlogActivity; import org.briarproject.briar.android.sharing.ShareBlogFragment; -import org.briarproject.briar.android.sharing.ShareBlogMessageFragment; import org.briarproject.briar.android.sharing.ShareForumActivity; import org.briarproject.briar.android.sharing.ShareForumFragment; -import org.briarproject.briar.android.sharing.ShareForumMessageFragment; import org.briarproject.briar.android.sharing.SharingModule; import org.briarproject.briar.android.splash.SplashScreenActivity; import org.briarproject.briar.android.test.TestDataActivity; @@ -183,8 +179,6 @@ public interface ActivityComponent { void inject(CreateGroupFragment fragment); - void inject(CreateGroupMessageFragment fragment); - void inject(GroupListFragment fragment); void inject(GroupInviteFragment fragment); @@ -195,20 +189,14 @@ public interface ActivityComponent { void inject(FeedFragment fragment); - void inject(IntroFragment fragment); - void inject(KeyAgreementFragment fragment); void inject(ContactChooserFragment fragment); void inject(ShareForumFragment fragment); - void inject(ShareForumMessageFragment fragment); - void inject(ShareBlogFragment fragment); - void inject(ShareBlogMessageFragment fragment); - void inject(IntroductionMessageFragment fragment); void inject(SettingsFragment fragment); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java index 111730a90..290c44a42 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java @@ -77,6 +77,17 @@ public abstract class BaseActivity extends AppCompatActivity @Override public void onCreate(@Nullable Bundle state) { + // create the ActivityComponent *before* calling super.onCreate() + // because it already attaches fragments which need access + // to the component for their own injection + AndroidComponent applicationComponent = + ((BriarApplication) getApplication()).getApplicationComponent(); + activityComponent = DaggerActivityComponent.builder() + .androidComponent(applicationComponent) + .activityModule(getActivityModule()) + .forumModule(getForumModule()) + .build(); + injectActivity(activityComponent); super.onCreate(state); // WARNING: When removing this or making it possible to turn it off, @@ -86,17 +97,6 @@ public abstract class BaseActivity extends AppCompatActivity // unlock screen is shown. if (PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); - AndroidComponent applicationComponent = - ((BriarApplication) getApplication()).getApplicationComponent(); - - activityComponent = DaggerActivityComponent.builder() - .androidComponent(applicationComponent) - .activityModule(getActivityModule()) - .forumModule(getForumModule()) - .build(); - - injectActivity(activityComponent); - for (ActivityLifecycleController alc : lifecycleControllers) { alc.onActivityCreate(this); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BasePostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BasePostFragment.java index fedded3e9..dcfc63334 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BasePostFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BasePostFragment.java @@ -24,6 +24,8 @@ import javax.annotation.Nullable; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; +import static java.util.Objects.requireNonNull; +import static java.util.logging.Logger.getLogger; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.util.UiUtils.MIN_DATE_RESOLUTION; @@ -35,7 +37,7 @@ abstract class BasePostFragment extends BaseFragment { static final String POST_ID = "briar.POST_ID"; private static final Logger LOG = - Logger.getLogger(BasePostFragment.class.getName()); + getLogger(BasePostFragment.class.getName()); private final Handler handler = new Handler(Looper.getMainLooper()); @@ -52,7 +54,7 @@ abstract class BasePostFragment extends BaseFragment { @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // retrieve MessageId of blog post from arguments - byte[] p = getArguments().getByteArray(POST_ID); + byte[] p = requireNonNull(getArguments()).getByteArray(POST_ID); if (p == null) throw new IllegalStateException("No post ID in args"); postId = new MessageId(p); @@ -68,6 +70,7 @@ abstract class BasePostFragment extends BaseFragment { @Override public void onAuthorClick(BlogPostItem post) { + if (getContext() == null) return; Intent i = new Intent(getContext(), BlogActivity.class); i.putExtra(GROUP_ID, post.getGroupId().getBytes()); i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java index 265df1108..be9924584 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java @@ -43,6 +43,7 @@ import javax.inject.Inject; import static android.app.Activity.RESULT_OK; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.widget.Toast.LENGTH_SHORT; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_SHARE_BLOG; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_WRITE_BLOG_POST; @@ -69,7 +70,6 @@ public class BlogFragment extends BaseFragment private boolean isMyBlog = false, canDeleteBlog = false; static BlogFragment newInstance(GroupId groupId) { - BlogFragment f = new BlogFragment(); Bundle bundle = new Bundle(); @@ -79,20 +79,27 @@ public class BlogFragment extends BaseFragment return f; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + blogController.setBlogSharingListener(this); + sharingController.setSharingListener(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - Bundle args = getArguments(); + Bundle args = requireNonNull(getArguments()); byte[] b = args.getByteArray(GROUP_ID); if (b == null) throw new IllegalStateException("No group ID in args"); groupId = new GroupId(b); View v = inflater.inflate(R.layout.fragment_blog, container, false); - adapter = - new BlogPostAdapter(getActivity(), this, getFragmentManager()); + adapter = new BlogPostAdapter(requireNonNull(getActivity()), this, + getFragmentManager()); list = v.findViewById(R.id.postList); list.setLayoutManager(new LinearLayoutManager(getActivity())); list.setAdapter(adapter); @@ -102,13 +109,6 @@ public class BlogFragment extends BaseFragment return v; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - blogController.setBlogSharingListener(this); - sharingController.setSharingListener(this); - } - @Override public void onStart() { super.onStart(); @@ -218,7 +218,10 @@ public class BlogFragment extends BaseFragment @Override public void onAuthorClick(BlogPostItem post) { - if (post.getGroupId().equals(groupId)) return; // We're already there + if (post.getGroupId().equals(groupId) || getContext() == null) { + // We're already there + return; + } Intent i = new Intent(getContext(), BlogActivity.class); i.putExtra(GROUP_ID, post.getGroupId().getBytes()); i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java index 6c44abbc4..8d2adca73 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java @@ -35,6 +35,7 @@ import javax.inject.Inject; import static android.app.Activity.RESULT_OK; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.support.design.widget.Snackbar.LENGTH_LONG; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_WRITE_BLOG_POST; @@ -64,13 +65,18 @@ public class FeedFragment extends BaseFragment implements return f; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + feedController.setFeedListener(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - - getActivity().setTitle(R.string.blogs_button); + requireNonNull(getActivity()).setTitle(R.string.blogs_button); View v = inflater.inflate(R.layout.fragment_blog, container, false); @@ -88,12 +94,6 @@ public class FeedFragment extends BaseFragment implements return v; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - feedController.setFeedListener(this); - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java index 54d4c5221..ca7ae3fe0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedPostFragment.java @@ -17,6 +17,7 @@ import org.briarproject.briar.android.controller.handler.UiResultExceptionHandle import javax.annotation.Nullable; import javax.inject.Inject; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; @UiThread @@ -42,13 +43,17 @@ public class FeedPostFragment extends BasePostFragment { return f; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - - Bundle args = getArguments(); + Bundle args = requireNonNull(getArguments()); byte[] b = args.getByteArray(GROUP_ID); if (b == null) throw new IllegalStateException("No group ID in args"); blogId = new GroupId(b); @@ -61,11 +66,6 @@ public class FeedPostFragment extends BasePostFragment { return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public void onStart() { super.onStart(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java index b4ebb3b85..685b41877 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java @@ -31,6 +31,7 @@ import static android.view.View.FOCUS_DOWN; import static android.view.View.GONE; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.blog.BasePostFragment.POST_ID; import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH; @@ -42,8 +43,6 @@ public class ReblogFragment extends BaseFragment implements SendListener { public static final String TAG = ReblogFragment.class.getName(); private ViewHolder ui; - private GroupId blogId; - private MessageId postId; private BlogPostItem item; @Inject @@ -75,9 +74,11 @@ public class ReblogFragment extends BaseFragment implements SendListener { @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - Bundle args = getArguments(); - blogId = new GroupId(args.getByteArray(GROUP_ID)); - postId = new MessageId(args.getByteArray(POST_ID)); + Bundle args = requireNonNull(getArguments()); + GroupId blogId = + new GroupId(requireNonNull(args.getByteArray(GROUP_ID))); + MessageId postId = + new MessageId(requireNonNull(args.getByteArray(POST_ID))); View v = inflater.inflate(R.layout.fragment_reblog, container, false); ui = new ViewHolder(v); @@ -89,14 +90,6 @@ public class ReblogFragment extends BaseFragment implements SendListener { ui.input.setMaxTextLength(MAX_BLOG_POST_TEXT_LENGTH); showProgressBar(); - return v; - } - - @Override - public void onStart() { - super.onStart(); - - // TODO: Load blog post when fragment is created. #631 feedController.loadBlogPost(blogId, postId, new UiResultExceptionHandler( this) { @@ -111,6 +104,8 @@ public class ReblogFragment extends BaseFragment implements SendListener { handleDbException(exception); } }); + + return v; } private void bindViewHolder() { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java index bbf1a3fd2..507f18f64 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java @@ -51,6 +51,7 @@ import javax.inject.Inject; import static android.os.Build.VERSION.SDK_INT; import static android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation; import static android.support.v4.view.ViewCompat.getTransitionName; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.logException; @@ -102,8 +103,7 @@ public class ContactListFragment extends BaseFragment implements EventListener { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - - getActivity().setTitle(R.string.contact_list_button); + requireNonNull(getActivity()).setTitle(R.string.contact_list_button); View contentView = inflater.inflate(R.layout.list, container, false); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java index 2aaf1cecc..00a96fec4 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java @@ -25,6 +25,7 @@ import java.util.Collection; import javax.annotation.Nullable; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.contactselection.ContactSelectorActivity.CONTACTS; import static org.briarproject.briar.android.contactselection.ContactSelectorActivity.getContactsFromIds; @@ -50,10 +51,10 @@ public abstract class BaseContactSelectorFragment { + viewModel.setContactAlias(aliasEditText.getText().toString()); + getDialog().dismiss(); + }); Button cancelButton = v.findViewById(R.id.cancelButton); cancelButton.setOnClickListener(v1 -> getDialog().cancel()); @@ -56,24 +69,4 @@ public class AliasDialogFragment extends AppCompatDialogFragment { return v; } - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - BriarActivity a = (BriarActivity) requireNonNull(getActivity()); - a.getActivityComponent().inject(this); - - viewModel = ViewModelProviders.of(getActivity(), viewModelFactory) - .get(ConversationViewModel.class); - - Contact contact = requireNonNull(viewModel.getContact().getValue()); - String alias = contact.getAlias(); - aliasEditText.setText(alias); - if (alias != null) aliasEditText.setSelection(alias.length()); - - setButton.setOnClickListener(v1 -> { - viewModel.setContactAlias(aliasEditText.getText().toString()); - getDialog().dismiss(); - }); - } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java index 8e6b1fa2a..389c50a11 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java @@ -44,6 +44,7 @@ import javax.annotation.Nullable; import javax.inject.Inject; import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.logException; @@ -80,13 +81,18 @@ public class ForumListFragment extends BaseEventFragment implements return fragment; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - getActivity().setTitle(R.string.forums_button); + requireNonNull(getActivity()).setTitle(R.string.forums_button); View contentView = inflater.inflate(R.layout.fragment_forum_list, container, @@ -102,7 +108,7 @@ public class ForumListFragment extends BaseEventFragment implements snackbar.getView().setBackgroundResource(R.color.briar_primary); snackbar.setAction(R.string.show, this); snackbar.setActionTextColor(ContextCompat - .getColor(getContext(), R.color.briar_button_text_positive)); + .getColor(getActivity(), R.color.briar_button_text_positive)); return contentView; } @@ -112,11 +118,6 @@ public class ForumListFragment extends BaseEventFragment implements return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public void onStart() { super.onStart(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java index e52d5b6b9..5ddf206f3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java @@ -10,11 +10,15 @@ import android.support.v4.app.FragmentActivity; import android.view.MenuItem; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.android.DestroyableContext; import org.briarproject.briar.android.activity.ActivityComponent; import javax.annotation.Nullable; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public abstract class BaseFragment extends Fragment implements DestroyableContext { @@ -22,12 +26,15 @@ public abstract class BaseFragment extends Fragment public abstract String getUniqueTag(); - public abstract void injectFragment(ActivityComponent component); - @Override public void onAttach(Context context) { super.onAttach(context); listener = (BaseFragmentListener) context; + injectFragment(listener.getActivityComponent()); + } + + public void injectFragment(ActivityComponent component) { + // fragments that need to inject, can override this method } @Override @@ -38,12 +45,6 @@ public abstract class BaseFragment extends Fragment setHasOptionsMenu(true); } - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - injectFragment(listener.getActivityComponent()); - } - @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java index 18faf950a..6506fcc71 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java @@ -10,7 +10,6 @@ import android.widget.TextView; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; @MethodsNotNullByDefault @@ -57,9 +56,4 @@ public class ErrorFragment extends BaseFragment { return v; } - @Override - public void injectFragment(ActivityComponent component) { - // not necessary - } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java index a438daf3e..72cd85de3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java @@ -1,7 +1,8 @@ package org.briarproject.briar.android.introduction; -import android.content.Context; import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v7.widget.LinearLayoutManager; import android.view.LayoutInflater; import android.view.View; @@ -11,6 +12,8 @@ import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.plugin.ConnectionRegistry; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; @@ -28,10 +31,14 @@ import java.util.logging.Logger; import javax.inject.Inject; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.briar.android.conversation.ConversationActivity.CONTACT_ID; +@UiThread +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class ContactChooserFragment extends BaseFragment { public static final String TAG = ContactChooserFragment.class.getName(); @@ -51,7 +58,6 @@ public class ContactChooserFragment extends BaseFragment { volatile ConnectionRegistry connectionRegistry; public static ContactChooserFragment newInstance(ContactId id) { - Bundle args = new Bundle(); ContactChooserFragment fragment = new ContactChooserFragment(); @@ -61,13 +67,13 @@ public class ContactChooserFragment extends BaseFragment { } @Override - public void onAttach(Context context) { - super.onAttach(context); + public void injectFragment(ActivityComponent component) { + component.inject(this); } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { View contentView = inflater.inflate(R.layout.list, container, false); @@ -77,14 +83,16 @@ public class ContactChooserFragment extends BaseFragment { Contact c2 = item.getContact(); showMessageScreen(c1, c2); }; - adapter = new ContactListAdapter(getActivity(), onContactClickListener); + adapter = new ContactListAdapter(requireNonNull(getActivity()), + onContactClickListener); list = contentView.findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(getActivity())); list.setAdapter(adapter); list.setEmptyText(R.string.no_contacts); - contactId = new ContactId(getArguments().getInt(CONTACT_ID)); + contactId = new ContactId( + requireNonNull(getArguments()).getInt(CONTACT_ID)); return contentView; } @@ -107,11 +115,6 @@ public class ContactChooserFragment extends BaseFragment { return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - private void loadContacts() { listener.runOnDbThread(() -> { try { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java index a1e6d2a6e..6312a9ef1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java @@ -39,6 +39,7 @@ import static android.app.Activity.RESULT_OK; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static android.widget.Toast.LENGTH_SHORT; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName; @@ -77,17 +78,17 @@ public class IntroductionMessageFragment extends BaseFragment return fragment; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public void onAttach(Context context) { super.onAttach(context); introductionActivity = (IntroductionActivity) context; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @@ -99,6 +100,14 @@ public class IntroductionMessageFragment extends BaseFragment actionBar.setTitle(R.string.introduction_message_title); } + // get contact IDs from fragment arguments + Bundle args = requireNonNull(getArguments()); + int contactId1 = args.getInt(CONTACT_ID_1, -1); + int contactId2 = args.getInt(CONTACT_ID_2, -1); + if (contactId1 == -1 || contactId2 == -1) { + throw new AssertionError("Use newInstance() to instantiate"); + } + // inflate view View v = inflater.inflate(R.layout.introduction_message, container, false); @@ -109,22 +118,15 @@ public class IntroductionMessageFragment extends BaseFragment ui.message.setMaxTextLength(MAX_INTRODUCTION_TEXT_LENGTH); ui.message.setEnabled(false); + // get contacts and then show view + prepareToSetUpViews(contactId1, contactId2); + return v; } @Override public void onStart() { super.onStart(); - - // get contact IDs from fragment arguments - int contactId1 = getArguments().getInt(CONTACT_ID_1, -1); - int contactId2 = getArguments().getInt(CONTACT_ID_2, -1); - if (contactId1 == -1 || contactId2 == -1) { - throw new java.lang.InstantiationError( - "You need to use newInstance() to instantiate"); - } - // get contacts and then show view - prepareToSetUpViews(contactId1, contactId2); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java index 447ec63a3..0cdf84d31 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ContactExchangeErrorFragment.java @@ -44,6 +44,11 @@ public class ContactExchangeErrorFragment extends BaseFragment { return TAG; } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @@ -74,11 +79,6 @@ public class ContactExchangeErrorFragment extends BaseFragment { return v; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - private void triggerFeedback() { finish(); UiUtils.triggerFeedback(androidExecutor); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/IntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/IntroFragment.java index 4a94db190..6ee1f45c2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/IntroFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/IntroFragment.java @@ -10,7 +10,6 @@ import android.widget.ScrollView; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.fragment.BaseFragment; import javax.annotation.Nullable; @@ -39,11 +38,6 @@ public class IntroFragment extends BaseFragment { return fragment; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public void onAttach(Context context) { super.onAttach(context); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementFragment.java index 19dcd203a..7a1f69519 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementFragment.java @@ -53,6 +53,7 @@ import static android.view.View.VISIBLE; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.HORIZONTAL; import static android.widget.Toast.LENGTH_LONG; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logException; @@ -136,7 +137,8 @@ public class KeyAgreementFragment extends BaseEventFragment @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - getActivity().setRequestedOrientation(SCREEN_ORIENTATION_NOSENSOR); + requireNonNull(getActivity()) + .setRequestedOrientation(SCREEN_ORIENTATION_NOSENSOR); cameraView.setPreviewConsumer(new QrCodeDecoder(this)); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/AuthorNameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/AuthorNameFragment.java index 6e4c35d86..109a9e153 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/AuthorNameFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/AuthorNameFragment.java @@ -18,6 +18,7 @@ import javax.annotation.Nullable; import static android.view.inputmethod.EditorInfo.IME_ACTION_NEXT; import static android.view.inputmethod.EditorInfo.IME_ACTION_NONE; +import static java.util.Objects.requireNonNull; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.briar.android.util.UiUtils.setError; @@ -35,11 +36,16 @@ public class AuthorNameFragment extends SetupFragment { return new AuthorNameFragment(); } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - getActivity().setTitle(getString(R.string.setup_title)); + requireNonNull(getActivity()).setTitle(getString(R.string.setup_title)); View v = inflater.inflate(R.layout.fragment_setup_author_name, container, false); authorNameWrapper = v.findViewById(R.id.nickname_entry_wrapper); @@ -57,11 +63,6 @@ public class AuthorNameFragment extends SetupFragment { return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override protected String getHelpText() { return getString(R.string.setup_name_explanation); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/DozeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/DozeFragment.java index 624437c6d..2a180b3dc 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/DozeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/DozeFragment.java @@ -19,6 +19,7 @@ import org.briarproject.briar.android.util.UiUtils; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_DOZE_WHITELISTING; import static org.briarproject.briar.android.util.UiUtils.showOnboardingDialog; @@ -39,11 +40,16 @@ public class DozeFragment extends SetupFragment return new DozeFragment(); } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - getActivity().setTitle(getString(R.string.setup_doze_title)); + requireNonNull(getActivity()).setTitle(getString(R.string.setup_doze_title)); setHasOptionsMenu(false); View v = inflater.inflate(R.layout.fragment_setup_doze, container, false); @@ -65,11 +71,6 @@ public class DozeFragment extends SetupFragment return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override protected String getHelpText() { return getString(R.string.setup_doze_explanation); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java index 72f3d6fae..29950050f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java @@ -23,6 +23,7 @@ import static android.content.Context.INPUT_METHOD_SERVICE; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; +import static java.util.Objects.requireNonNull; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK; @MethodsNotNullByDefault @@ -43,11 +44,16 @@ public class PasswordFragment extends SetupFragment { return new PasswordFragment(); } + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - getActivity().setTitle(getString(R.string.setup_password_intro)); + requireNonNull(getActivity()).setTitle(getString(R.string.setup_password_intro)); View v = inflater.inflate(R.layout.fragment_setup_password, container, false); @@ -64,6 +70,11 @@ public class PasswordFragment extends SetupFragment { passwordConfirmation.addTextChangedListener(this); nextButton.setOnClickListener(this); + if (!setupController.needToShowDozeFragment()) { + nextButton.setText(R.string.create_account_button); + passwordConfirmation.setImeOptions(IME_ACTION_DONE); + } + return v; } @@ -72,17 +83,6 @@ public class PasswordFragment extends SetupFragment { return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - - // the controller is not yet available in onCreateView() - if (!setupController.needToShowDozeFragment()) { - nextButton.setText(R.string.create_account_button); - passwordConfirmation.setImeOptions(IME_ACTION_DONE); - } - } - @Override protected String getHelpText() { return getString(R.string.setup_password_explanation); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupFragment.java index 5524edd8c..ba5da40de 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupFragment.java @@ -11,7 +11,8 @@ import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.fragment.BaseFragment; @@ -22,7 +23,8 @@ import static android.view.inputmethod.EditorInfo.IME_ACTION_NEXT; import static org.briarproject.briar.android.util.UiUtils.enterPressed; import static org.briarproject.briar.android.util.UiUtils.showOnboardingDialog; -@NotNullByDefault +@MethodsNotNullByDefault +@ParametersNotNullByDefault abstract class SetupFragment extends BaseFragment implements TextWatcher, OnEditorActionListener, OnClickListener { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java index a0bc31684..5a56ff198 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java @@ -5,19 +5,21 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.fragment.BaseFragment; -import javax.annotation.Nonnull; import javax.annotation.Nullable; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class SignOutFragment extends BaseFragment { public static final String TAG = SignOutFragment.class.getName(); @Override - public View onCreateView(@Nonnull LayoutInflater inflater, + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_sign_out, container, false); @@ -27,9 +29,4 @@ public class SignOutFragment extends BaseFragment { public String getUniqueTag() { return TAG; } - - @Override - public void injectFragment(ActivityComponent component) { - // no need to inject - } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java index 29e7b0ad9..f36c749ef 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java @@ -2,6 +2,7 @@ package org.briarproject.briar.android.privategroup.creation; import android.content.Context; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.design.widget.TextInputLayout; import android.text.Editable; import android.text.TextWatcher; @@ -12,6 +13,8 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.util.StringUtils; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; @@ -23,6 +26,8 @@ import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; import static org.briarproject.briar.android.util.UiUtils.enterPressed; import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class CreateGroupFragment extends BaseFragment { public final static String TAG = CreateGroupFragment.class.getName(); @@ -40,8 +45,13 @@ public class CreateGroupFragment extends BaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_create_group, container, false); @@ -87,11 +97,6 @@ public class CreateGroupFragment extends BaseFragment { listener.showSoftKeyboard(nameEntry); } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public String getUniqueTag() { return TAG; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java index b4c3fc670..dec906b6f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java @@ -2,10 +2,13 @@ package org.briarproject.briar.android.privategroup.creation; import android.support.annotation.StringRes; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.sharing.BaseMessageFragment; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class CreateGroupMessageFragment extends BaseMessageFragment { private final static String TAG = @@ -28,9 +31,4 @@ public class CreateGroupMessageFragment extends BaseMessageFragment { return TAG; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java index 8840c9cf0..dc6da1aea 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java @@ -1,6 +1,7 @@ package org.briarproject.briar.android.privategroup.creation; import android.os.Bundle; +import android.support.annotation.Nullable; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; @@ -13,6 +14,7 @@ import org.briarproject.briar.android.contactselection.SelectableContactItem; import javax.inject.Inject; +import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; @MethodsNotNullByDefault @@ -33,14 +35,14 @@ public class GroupInviteFragment extends ContactSelectorFragment { } @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - getActivity().setTitle(R.string.groups_invite_members); + public void injectFragment(ActivityComponent component) { + component.inject(this); } @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requireNonNull(getActivity()).setTitle(R.string.groups_invite_members); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java index 2015069be..e82306370 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java @@ -37,6 +37,7 @@ import javax.annotation.Nullable; import javax.inject.Inject; import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE; +import static java.util.Objects.requireNonNull; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -57,17 +58,23 @@ public class GroupListFragment extends BaseFragment implements private GroupListAdapter adapter; private Snackbar snackbar; + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + controller.setGroupListListener(this); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - getActivity().setTitle(R.string.groups_button); + requireNonNull(getActivity()).setTitle(R.string.groups_button); View v = inflater.inflate(R.layout.list, container, false); - adapter = new GroupListAdapter(getContext(), this); + adapter = new GroupListAdapter(getActivity(), this); list = v.findViewById(R.id.list); list.setEmptyImage(R.drawable.ic_empty_state_group_list); list.setEmptyText(R.string.groups_list_empty); @@ -79,17 +86,11 @@ public class GroupListFragment extends BaseFragment implements snackbar.getView().setBackgroundResource(R.color.briar_primary); snackbar.setAction(R.string.show, this); snackbar.setActionTextColor(ContextCompat - .getColor(getContext(), R.color.briar_button_text_positive)); + .getColor(getActivity(), R.color.briar_button_text_positive)); return v; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - controller.setGroupListListener(this); - } - @Override public void onStart() { super.onStart(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java index 1f6fad3ff..f9747ff5b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java @@ -37,7 +37,7 @@ public abstract class BaseMessageFragment extends BaseFragment } @Override - public View onCreateView(@Nullable LayoutInflater inflater, + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java index a963664fa..0acd4d575 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java @@ -1,14 +1,18 @@ package org.briarproject.briar.android.sharing; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class ShareBlogMessageFragment extends BaseMessageFragment { public final static String TAG = ShareBlogMessageFragment.class.getName(); @@ -18,9 +22,9 @@ public class ShareBlogMessageFragment extends BaseMessageFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - + public View onCreateView(LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { setTitle(R.string.blogs_sharing_share); return super.onCreateView(inflater, container, savedInstanceState); } @@ -37,11 +41,6 @@ public class ShareBlogMessageFragment extends BaseMessageFragment { return R.string.forum_share_message; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public String getUniqueTag() { return TAG; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java index 8a30df49e..1cb07447f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java @@ -1,14 +1,18 @@ package org.briarproject.briar.android.sharing; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; -import org.briarproject.briar.android.activity.ActivityComponent; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class ShareForumMessageFragment extends BaseMessageFragment { public final static String TAG = ShareForumMessageFragment.class.getName(); @@ -18,8 +22,9 @@ public class ShareForumMessageFragment extends BaseMessageFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { setTitle(R.string.forum_share_button); return super.onCreateView(inflater, container, savedInstanceState); @@ -37,11 +42,6 @@ public class ShareForumMessageFragment extends BaseMessageFragment { return R.string.forum_share_message; } - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - @Override public String getUniqueTag() { return TAG;