Skip to content
Snippets Groups Projects
Commit 08e395b1 authored by s22thong's avatar s22thong
Browse files
parents 76903570 2236aaff
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,12 @@ ...@@ -27,6 +27,12 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".SecondActivity" android:exported="true" /> <activity android:name=".SecondActivity" android:exported="true" />
<activity android:name=".DatePickerActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application> </application>
<queries> <queries>
......
package fr.imt_atlantique.myfirstapplication;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DatePicker implements Parcelable {
private LocalDate date;
public DatePicker(LocalDate birthDate) {
this.date = birthDate;
}
protected DatePicker(Parcel in) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d");
date = LocalDate.parse(in.readString(), formatter);
}
}
public static final Creator<DatePicker> CREATOR = new Creator<DatePicker>() {
@Override
public DatePicker createFromParcel(Parcel in) {
return new DatePicker(in);
}
@Override
public DatePicker[] newArray(int size) {
return new DatePicker[size];
}
};
@Override
public void writeToParcel(@NonNull Parcel parcel, int i) {
parcel.writeString(this.date.toString());
}
@Override
public int describeContents() {
return 0;
}
public LocalDate getDate() {
return date;
}
}
package fr.imt_atlantique.myfirstapplication;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.DatePicker;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DatePickerActivity extends AppCompatActivity {
LocalDate date;
DatePicker datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Lifecycle", "onCreate method");
EdgeToEdge.enable(this);
setContentView(R.layout.activity_date);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.date), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
datePicker = findViewById(R.id.datePicker);
getValues();
// Bouton de validation
Button validateButton = findViewById(R.id.validateDateButton);
validateButton.setOnClickListener(view -> {
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth() + 1; // Le mois commence à 0
int year = datePicker.getYear();
LocalDate date = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
date = LocalDate.of(year, month, day);
}
// Retourne la date sélectionnée via Parcelable
fr.imt_atlantique.myfirstapplication.DatePicker dateObject = new fr.imt_atlantique.myfirstapplication.DatePicker(date);
Intent resultIntent = new Intent();
resultIntent.putExtra("date", dateObject);
setResult(RESULT_OK, resultIntent);
finish(); // Ferme l'activité
});
// Bouton d'annulation
Button cancelButton = findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(view -> {
setResult(RESULT_CANCELED);
finish();
});
}
private void getValues() {
Intent intent = getIntent();
if (intent != null) {
fr.imt_atlantique.myfirstapplication.DatePicker date = intent.getParcelableExtra("date");
if (date != null) {
this.date = date.getDate();
// ✅ Met à jour le DatePicker avec la date reçue
datePicker.updateDate(this.date.getYear(), this.date.getMonthValue() - 1, this.date.getDayOfMonth());
}
}
}
@Override
protected void onStart() {
super.onStart();
Log.i("Lifecycle", "onStart method");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("Lifecycle", "onRestart method");
}
@Override
protected void onResume() {
super.onResume();
Log.i("Lifecycle", "onResume method");
}
}
...@@ -6,6 +6,7 @@ import android.content.Intent; ...@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.icu.util.Calendar; import android.icu.util.Calendar;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -19,8 +20,11 @@ import android.widget.DatePicker; ...@@ -19,8 +20,11 @@ import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView;
import androidx.activity.EdgeToEdge; import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets; import androidx.core.graphics.Insets;
...@@ -44,6 +48,9 @@ public class MainActivity extends AppCompatActivity { ...@@ -44,6 +48,9 @@ public class MainActivity extends AppCompatActivity {
int birthDept = 0; int birthDept = 0;
ArrayList<String> phoneNumbersList = new ArrayList<>(); ArrayList<String> phoneNumbersList = new ArrayList<>();
TextView birthDateTextView;
Button birthDateButton;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -55,6 +62,12 @@ public class MainActivity extends AppCompatActivity { ...@@ -55,6 +62,12 @@ public class MainActivity extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets; return insets;
}); });
birthDateTextView = findViewById(R.id.birthDateTextView);
birthDateButton = findViewById(R.id.birthDateEditText);
birthDateButton.setOnClickListener(view -> showDatePicker());
restorePreferences(); restorePreferences();
} }
...@@ -241,29 +254,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -241,29 +254,7 @@ public class MainActivity extends AppCompatActivity {
saveValues(); saveValues();
} }
public void showDatePicker(View v) {
// Obtenir la date actuelle
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);
DatePickerDialog datePickerDialog = new DatePickerDialog(
this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
// Mettre à jour le texte du bouton avec la date choisie
Button birthDateButton = findViewById(R.id.birthDateEditText);
String selectedDate = selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear;
birthDateButton.setText(selectedDate);
}
},
year, month, day
);
datePickerDialog.show();
}
protected void onSaveInstanceState(Bundle outState){ protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
...@@ -356,4 +347,34 @@ public class MainActivity extends AppCompatActivity { ...@@ -356,4 +347,34 @@ public class MainActivity extends AppCompatActivity {
} }
public void showDatePicker() {
Intent intent = new Intent(MainActivity.this, DatePickerActivity.class);
if (!birthDate.equals("Pick date")) { // ✅ Envoie la date uniquement si elle est définie
LocalDate date = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
date = LocalDate.parse(birthDate, DateTimeFormatter.ofPattern("d/M/yyyy"));
}
fr.imt_atlantique.myfirstapplication.DatePicker dateObject = new fr.imt_atlantique.myfirstapplication.DatePicker(date);
intent.putExtra("date", dateObject);
}
datePickerLauncher.launch(intent);
}
private final ActivityResultLauncher<Intent> datePickerLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == RESULT_OK && result.getData() != null) {
fr.imt_atlantique.myfirstapplication.DatePicker date = result.getData().getParcelableExtra("date");
if (date != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
birthDate = date.getDate().format(DateTimeFormatter.ofPattern("d/M/yyyy")); // ✅ Formate la date
}
birthDateButton.setText(birthDate); // ✅ Met à jour le texte du bouton (si nécessaire)
}
}
}
);
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment