Оповещение Диалог не ведет себя должным образом
У меня есть текст, и если я ввожу какой-то текст и нажимаю кнопку "Назад", появляется диалоговое окно, спрашивающее меня, отменить изменения или нет, но я хотел показать клавиатуру при создании действия, поэтому я добавил следующую строку в моем окне просмотра фрагмента.
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
теперь, когда я делаю изменения в моем тексте редактирования, AlertDialog, говорящий, хотите ли вы отменить изменения, не появляется?
Если я уберу строку
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
из моего onCreateView он показывает AlertDialog.
public class EditorFragment extends Fragment implements android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>, EditorActivity.OnBackPressedListener {
private EditText TaskName, DueDate, DueTime;
private boolean taskChanged = false;
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
taskChanged = true;
return false;
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_editor, container, false);
TaskName = (EditText) view.findViewById(R.id.tasknameedittext);
DueDate = (EditText) view.findViewById(R.id.duedateedittext);
DueTime = (EditText) view.findViewById(R.id.duetimeedittext);
TaskName.setOnTouchListener(onTouchListener);
DueDate.setOnTouchListener(onTouchListener);
DueTime.setOnTouchListener(onTouchListener);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
getActivity().getMenuInflater().inflate(R.menu.menu_editor, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.editoractivitydelete:
showDeleteConfirmationDialog();
return true;
case R.id.editoractivitysave:
saveTask();
return true;
case android.R.id.home:
//up button code
if (!taskChanged) {
NavUtils.navigateUpFromSameTask(getActivity());
return true;
}
DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NavUtils.navigateUpFromSameTask(getActivity());
}
};
showUnsavedChangesDialog(onClickListener);
return true;
}
return super.onOptionsItemSelected(item);
}
private void showUnsavedChangesDialog(DialogInterface.OnClickListener onClickListener) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.discardchanges);
builder.setPositiveButton(R.string.yes, onClickListener);
builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (dialog != null) {
dialog.dismiss();
}
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((EditorActivity) getActivity()).setOnBackPressedListener(this);
}
//Back Button code
@Override
public void doBack() {
if (!taskChanged) {
NavUtils.navigateUpFromSameTask(getActivity());
return;
}
DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NavUtils.navigateUpFromSameTask(getActivity());
}
};
showUnsavedChangesDialog(onClickListener);
}
}