Диалоговое окно выбора даты не работает Изменение одного текста Внесение изменений в другой

Я хочу получить дату в текстовом виде с помощью диалогового окна DatePicker. У меня есть текущая дата в EditText, поскольку активность открыта. Я реализовал диалоговое окно DatePicker в EditTexts, но когда я пытаюсь изменить дату, щелкнув «Редактировать текст», он изменяет дату на другое текстовое представление в форме...

В основном у меня есть 2 EditTexts, и я реализовал диалоговое окно DatePicker на обоих.

Вот мой XML-файл

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
android:orientation="vertical">


<TextView
    android:layout_marginTop="40dp"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:id="@+id/txtclientname"
    />

<EditText
    android:layout_marginTop="80dp"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:inputType="date"
    android:id="@+id/currdate"
    android:textColor="@color/colorText"
    />

<EditText
    android:layout_marginTop="80dp"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:id="@+id/currdate1"
    android:layout_toRightOf="@+id/currdate"
    android:textColor="@color/colorText"
    android:inputType="date"
    />

Вот мой файл Jave

{

TextView EdtName;
EditText EditCurrDate,EdtCurrDate2;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View view =  inflater.inflate(R.layout.invoice, container, false);

    String date_n = new SimpleDateFormat("MMM / dd / yyyy", Locale.getDefault()).format(new Date());

    EditCurrDate=view.findViewById(R.id.currdate);
    EdtCurrDate2=view.findViewById(R.id.currdate1);
    EdtName=view.findViewById(R.id.txtclientname);

    EditCurrDate.setText(date_n);

    EdtCurrDate2.setText(date_n);

    EditCurrDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar mcurrentDate=Calendar.getInstance();
            int year = mcurrentDate.get(Calendar.YEAR);
            int month = mcurrentDate.get(Calendar.MONTH);
            int day = mcurrentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedYear, int selectedMonth, int selectedDay) {
                    // TODO Auto-generated method stub

                    Log.e("Date Selected", "Month: " + selectedMonth + " Day: " + selectedDay + " Year: " + selectedYear);
                    EditCurrDate.setText((selectedMonth+1) + "/" + selectedDay + "/" + selectedYear);
                }
            },year, month, day);
            mDatePicker.setTitle("Select date");
            mDatePicker.show();
        }
    });

    EdtCurrDate2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar mcurrentDate=Calendar.getInstance();
            int year1 = mcurrentDate.get(Calendar.YEAR);
            int month1 = mcurrentDate.get(Calendar.MONTH);
            int day1 = mcurrentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedYear, int selectedMonth, int selectedDay) {
                    // TODO Auto-generated method stub

                    Log.e("Date Selected", "Month: " + selectedMonth + " Day: " + selectedDay + " Year: " + selectedYear);
                    EditCurrDate.setText((selectedMonth+1) + "/" + selectedDay + "/" + selectedYear);
                }
            },year1, month1, day1);
            mDatePicker.setTitle("Select date");
            mDatePicker.show();
        }
    });


    return view;
}

}

вы устанавливаете дату и тот же текст редактирования в обоих слушателях, например, EditCurrDate

Anas Mehar 22.05.2019 11:16

Позвольте мне проверить это

Aliza Shah 22.05.2019 11:16

Вы устанавливаете одно и то же для обоих edittext

Piyush 22.05.2019 11:31

моя проблема только что решилась

Aliza Shah 22.05.2019 11:34
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
4
683
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я просто использую один и тот же текст редактирования в обоих прослушивателях кликов.

 {

TextView EdtName;
EditText EditCurrDate;
EditText EdtCurrDate2;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View view =  inflater.inflate(R.layout.invoice, container, false);

    String date_n = new SimpleDateFormat("MMM / dd / yyyy", Locale.getDefault()).format(new Date());

    EditCurrDate=view.findViewById(R.id.currdate);
    EdtCurrDate2=view.findViewById(R.id.currdate1);
    EdtName=view.findViewById(R.id.txtclientname);

    EditCurrDate.setText(date_n);

    EdtCurrDate2.setText(date_n);

    EditCurrDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar mcurrentDate=Calendar.getInstance();
            int year = mcurrentDate.get(Calendar.YEAR);
            int month = mcurrentDate.get(Calendar.MONTH);
            int day = mcurrentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedYear, int selectedMonth, int selectedDay) {
                    // TODO Auto-generated method stub

                    Log.e("Date Selected", "Month: " + selectedMonth + " Day: " + selectedDay + " Year: " + selectedYear);
                    EditCurrDate.setText((selectedMonth+1) + "/" + selectedDay + "/" + selectedYear);
                }
            },year, month, day);
            mDatePicker.setTitle("Select date");
            mDatePicker.show();
        }
    });

    EdtCurrDate2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar mcurrentDate=Calendar.getInstance();
            int year1 = mcurrentDate.get(Calendar.YEAR);
            int month1 = mcurrentDate.get(Calendar.MONTH);
            int day1 = mcurrentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedYear, int selectedMonth, int selectedDay) {
                    // TODO Auto-generated method stub

                    Log.e("Date Selected", "Month: " + selectedMonth + " Day: " + selectedDay + " Year: " + selectedYear);
                    EdtCurrDate2.setText((selectedMonth+1) + "/" + selectedDay + "/" + selectedYear);
                }
            },year1, month1, day1);
            mDatePicker.setTitle("Select date");
            mDatePicker.show();
        }
    });


    return view;
}

}

Вы в основном устанавливаете текст для одного и того же текста редактирования EdtCurrDate в своих первом и втором прослушивателях диалога.

поэтому вам нужно изменить второй на EdtCurrDate2

Note : i suggest using date patterns in order to retrieve date strings from a date object

Пример :

public class DateUtils {

//Date patterns examples 
public static String UI_DATE_PATTERN = "EEE, dd MMMM yyyy, HH:mm";
public static String SIMPLE_DATE_PATTERN = "dd/MM/yyyy"; // <-- Your desired date pattern

//converts date to a string
public static String toString(Date date, String pattern) {
    try {
        return new SimpleDateFormat(pattern, Locale.getDefault()).format(date);
    } catch (Exception e) {
        return e.getMessage();
    }
}

//Gets the date from a string
public static Date fromString(String dateString, String stringPattern) {
    try {
        return new SimpleDateFormat(stringPattern, Locale.getDefault()).parse(dateString);
    } catch (ParseException e) {
        return null;
    }
}
}

Применение :

 Date currentDate = Calendar.getInstance().getTime(); // <- Your date object

 String currentDateSimpleString = DateUtils.toString(currentDate, DateUtils.SIMPLE_DATE_PATTERN); 

Выход: 22.05.2019

 String currentDateUiString = DateUtils.toString(currentDate, DateUtils.UI_DATE_PATTERN);

Выход: Ср, 05 мая 2019, 17:09

 Date dateFromSimpleString = DateUtils.fromString(currentDateSimpleString , DateUtils.SIMPLE_DATE_PATTERN); 

Выход равен текущая дата

 Date dateFromUiString = DateUtils.fromString(currentDateUiString, DateUtils.UI_DATE_PATTERN); 

Выход равен текущая дата

Note : To retrieve a date from a string, the pattern must have its exact same format otherwise it will throw an exception.

Другие вопросы по теме