Вот весь код, который задействован
//Класс,в котором всё реализуется
public class AddingTaskDialogFragment extends DialogFragment {
//Статический вложенный класс DatePickerFragment
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
public DatePickerFragment(){
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}
//Метод, в котором реализуется весь функционал
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dialog_title);
LayoutInflater inflater = getActivity().getLayoutInflater();
View container = inflater.inflate(R.layout.dialog_task, null);
final TextInputLayout tilTitle = (TextInputLayout) container.findViewById(R.id.tilDialogTaskTitle);
final EditText etTitle = tilTitle.getEditText();
TextInputLayout tilDate = (TextInputLayout) container.findViewById(R.id.tilDialogTaskDate);
final EditText etDate = tilDate.getEditText();
final TextInputLayout tilTime = (TextInputLayout) container.findViewById(R.id.tilDialogTaskTime);
final EditText etTime = tilTime.getEditText();
tilTitle.setHint(getResources().getString(R.string.task_title));
tilDate.setHint(getResources().getString(R.string.task_date));
tilTime.setHint(getResources().getString(R.string.task_time));
builder.setView(container);
//Реализация
etDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (etDate.length() == 0) {
etDate.setText(" ");
}
/*Ругается на DatePickerFragment:
* Fragments should be static such that they can be re-instantiated by the system, and anonymous classes are not static
*/
DialogFragment datePickerFragment = new DatePickerFragment() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar dateCalendar = Calendar.getInstance();
dateCalendar.set(year, monthOfYear, dayOfMonth);
etDate.setText(Utils.getDate(dateCalendar.getTimeInMillis()));
}
@Override
public void onCancel(DialogInterface dialog) {
etDate.setText(null);
}
};
datePickerFragment.show(getFragmentManager(), "DatePickerFragment");
}
});
//Часть не задевающая мэйн код, но на всякий случай я её сюда вставил
AlertDialog alertDialog = builder.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
final Button positiveButton = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE);
if(etTitle.length() == 0) {
positiveButton.setEnabled(false);
tilTitle.setError(getResources().getString(R.string.dialog_error_empty_title));
}
etTitle.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == 0) {
positiveButton.setEnabled(false);
tilTitle.setError(getResources().getString(R.string.dialog_error_empty_title));
} else {
positiveButton.setEnabled(true);
tilTitle.setErrorEnabled(false);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
});
return alertDialog;
}
}
Вот как я вызываю AddingTaskDialogFragment в коде MainActivity:
public void setUI(){
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment addingTaskDialogFragment=new AddingTaskDialogFragment();
addingTaskDialogFragment.show(fragmentManager, "AddingTaskDialogFragment");
}
});
Фрагменты как и активити и сервисы управляются системой. В т.ч. система может их восстановить после уничтожения процесса по к-л причине. Чтобы это работало система должна иметь информацию об этих компонентах. При этом она не может её получить из анонимного класса, о чём и сообщает.
Засим, вам надо заменить ваши анонимные классы на статические внутренние классы или обычные классы в отдельных файлах.
Поискав в инете решения данной проблемы, я узнал, что данный вариант кода устаревший (2015 года) и если как-то его и использовать, то необходимо его почти полностью менять (в особенности DatePickerFragment на DatePickerDialog с таймпикером аналогично). Так что решения проблемы попросту нет, код уже никем не используется.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть кастомный адаптер для лист вью в который добавляются сообщенияПоследовательность сообщений идет сверху вниз
Откомпилировал одно и тоже приложение примерно по 1000 раз на 86 и 64 разрядной windows 7 результат такой:
Имеется 2 массива с числамиЭлементы в них находятся в некой зависимости, т
Как сделать такую маску, что-бы можно было правый квадрат центрировать как сверху так и снизу (то есть что-бы можно было привязать паралакс)?