mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 03:09:04 +01:00
[android] AliasFragment: Wait for activity component to be created
before injecting the ViewModel
This commit is contained in:
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user