From b31d61afc5531dd7892645245524f6b8eb9a24b7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 18 Dec 2018 15:32:26 -0200 Subject: [PATCH] [android] AliasFragment: Wait for activity component to be created before injecting the ViewModel --- .../conversation/AliasDialogFragment.java | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java index b5d446e71..67c5c59fe 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java @@ -15,6 +15,7 @@ import org.briarproject.bramble.api.contact.Contact; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.BriarActivity; +import javax.annotation.Nullable; import javax.inject.Inject; import static java.util.Objects.requireNonNull; @@ -28,6 +29,7 @@ public class AliasDialogFragment extends AppCompatDialogFragment { private ConversationViewModel viewModel; private EditText aliasEditText; + private Button setButton; public static AliasDialogFragment newInstance() { return new AliasDialogFragment(); @@ -38,35 +40,40 @@ public class AliasDialogFragment extends AppCompatDialogFragment { super.onCreate(savedInstanceState); setStyle(STYLE_NO_TITLE, R.style.BriarDialogTheme); - - if (getActivity() == null) return; - ((BriarActivity) getActivity()).getActivityComponent().inject(this); - viewModel = ViewModelProviders.of(getActivity(), viewModelFactory) - .get(ConversationViewModel.class); } @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_alias_dialog, container, false); - aliasEditText = v.findViewById(R.id.aliasEditText); - Contact contact = requireNonNull(viewModel.getContact().getValue()); - String alias = contact.getAlias(); - aliasEditText.setText(alias); - if (alias != null) aliasEditText.setSelection(alias.length()); - - Button setButton = v.findViewById(R.id.setButton); - setButton.setOnClickListener(v1 -> { - viewModel.setContactAlias(aliasEditText.getText().toString()); - getDialog().dismiss(); - }); + setButton = v.findViewById(R.id.setButton); Button cancelButton = v.findViewById(R.id.cancelButton); cancelButton.setOnClickListener(v1 -> getDialog().cancel()); 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(); + }); + } + }