Я использую одну кнопку для выполнения двух задач.
1. Выбор даты 2. Разница между двумя датами
Как есть:
Я использую метод «onclick» для двух кнопок.
- btnDate2 используется для выбора даты и щелчка по значению (setDate2)
- button9 используется для вычисления разницы между двумя датами и щелчка по значению (разность)
Будут:
Одна кнопка для выбора даты и расчета разницы между двумя датами. И она должна быть в последовательности. Пример: 1: Выбрать дату 2. Вычислить разницу между датами
Текущий код: MainActivity.java
package com.bar.example.myapplication;
import android.app.DialogFragment;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.threeten.bp.LocalDate;
import org.threeten.bp.format.DateTimeFormatter;
import org.threeten.bp.format.DateTimeParseException;
import org.threeten.bp.temporal.ChronoUnit;
import java.text.SimpleDateFormat;
public class MainActivity extends AppCompatActivity {
public TextView txtResult, tv, textDivNumber, textAVG, txtZaMisiac;
public static TextView tvresult;
public Button reset, button, button1, button2, button9, editTextDate3, editTextDate5, btnok;
public EditText barcodeResult;
public static EditText courseTitleEditText;
private ListView offeringsListView;
private static DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d.M.uuuu");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextDate5 = (Button) findViewById(R.id.editText5);
button2 = (Button) findViewById(R.id.btnDate2);
txtResult = (TextView) findViewById(R.id.editText2);
editTextDate5.setText(DateFormat.format("dd.MM.yyyy", new java.util.Date()).toString());
}
public void diff(View view) {
SimpleDateFormat myFormat = new SimpleDateFormat("dd.MM.yyyy");
CharSequence inputString1 = editTextDate5.getText();
try {
LocalDate date1 = LocalDate.parse(inputString1, dateFormatter);
CharSequence inputString2 = button2.getText();
try {
LocalDate date2 = LocalDate.parse(inputString2, dateFormatter);
long diffDate = ChronoUnit.DAYS.between(date1, date2);
txtResult.setText(String.valueOf(diffDate));
} catch (DateTimeParseException dtpe) {
Toast.makeText(this, "Date2 is not a valid date: " + inputString2, Toast.LENGTH_SHORT).show();
}
} catch (DateTimeParseException dtpe) {
Toast.makeText(this, "Date1 is not a valid date: " + inputString1, Toast.LENGTH_SHORT).show();
}
}
public void setDate1(View view) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "Date Picker");
}
public void setDate2(View view) {
DialogFragment newFragment = new DatePickerFragment2();
newFragment.show(getFragmentManager(), "Date Picker");
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
}
Datepickerformat2.java
package com.bar.example.myapplication;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.Button;
import android.widget.DatePicker;
import java.util.Calendar;
public class DatePickerFragment2 extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@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);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
Button btnDate2 = (Button) getActivity().findViewById(R.id.btnDate2);
String stringOfDate = day + "." + (month + 1) + "." + year;
btnDate2.setText(stringOfDate);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1">
<TextView android:id="@+id/editText1" android:layout_width="47dp" android:layout_height="wrap_content" android:ems="10" android:inputType="textNoSuggestions" android:text="Date:" />
<Button android:id="@+id/editText5" android:layout_width="47dp" android:layout_height="wrap_content" android:layout_weight="0.50" android:ems="10" android:inputType="textNoSuggestions" android:text="" />
<TextView android:id="@+id/editText2" android:layout_width="49dp" android:layout_height="wrap_content" android:ems="10" android:inputType="textNoSuggestions" android:text="Expiry:" />
<Button android:id="@+id/btnDate2" android:layout_width="59dp" android:layout_height="wrap_content" android:layout_weight="0.41" android:ems="10" android:onClick="setDate2" android:text="" />
<Button android:id="@+id/button9" android:layout_width="59dp" android:layout_height="wrap_content" android:layout_weight="0.41" android:ems="10" android:inputType="textNoSuggestions" android:onClick="diff" android:text="calc" />
</LinearLayout>
с измененным кодом.
С 1-м щелчком, ![enter image description here](https://i.stack.imgur.com/WohZA.jpg)
После выбора ок.![enter image description here](https://i.stack.imgur.com/nZFha.jpg)
Теперь снова я должен нажать кнопку калькулятора, чтобы узнать разницу в днях.![enter image description here](https://i.stack.imgur.com/1ZZEH.jpg)
Мне нужно 1-й щелкнуть дату и выбрать «ОК» после выбора даты. Я должен видеть разницу в днях после нажатия «ОК» на экраневместо повторного нажатия кнопки.
Требование 3:
Когда число edittext2 превышает число против spinner2, тогда цвет edittext2 должен изменить его на красный цвет и некоторое сообщение ![enter image description here](https://i.stack.imgur.com/Kp9qN.jpg)
Когда число edittext2 приближается к числу, близкому к значению spinner2, тогда цвет edittext2 должен изменить его на желтый, а также некоторое сообщение ![enter image description here](https://i.stack.imgur.com/9ciM0.jpg)