Android Assignment
This commit is contained in:
parent
a0c43c41d0
commit
ca4d18d1b6
@ -4,18 +4,18 @@
|
|||||||
<value>
|
<value>
|
||||||
<entry key="app">
|
<entry key="app">
|
||||||
<State>
|
<State>
|
||||||
<targetSelectedWithDropDown>
|
<runningDeviceTargetSelectedWithDropDown>
|
||||||
<Target>
|
<Target>
|
||||||
<type value="QUICK_BOOT_TARGET" />
|
<type value="RUNNING_DEVICE_TARGET" />
|
||||||
<deviceKey>
|
<deviceKey>
|
||||||
<Key>
|
<Key>
|
||||||
<type value="VIRTUAL_DEVICE_PATH" />
|
<type value="SERIAL_NUMBER" />
|
||||||
<value value="$USER_HOME$/.android/avd/Pixel_3a_API_34_extension_level_7_x86_64.avd" />
|
<value value="29261FDH3008Z2" />
|
||||||
</Key>
|
</Key>
|
||||||
</deviceKey>
|
</deviceKey>
|
||||||
</Target>
|
</Target>
|
||||||
</targetSelectedWithDropDown>
|
</runningDeviceTargetSelectedWithDropDown>
|
||||||
<timeTargetWasSelectedWithDropDown value="2024-03-18T14:22:25.262676Z" />
|
<timeTargetWasSelectedWithDropDown value="2024-03-22T22:39:37.121280231Z" />
|
||||||
</State>
|
</State>
|
||||||
</entry>
|
</entry>
|
||||||
</value>
|
</value>
|
||||||
|
Binary file not shown.
@ -8,7 +8,7 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "asdv.lisset.criminalintent3"
|
applicationId = "asdv.lisset.criminalintent3"
|
||||||
minSdk = 21
|
minSdk = 24
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "1.0"
|
versionName = "1.0"
|
||||||
|
@ -3,6 +3,9 @@ package asdv.lisset.criminalintent;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.fragment.app.DialogFragment;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
@ -32,6 +35,7 @@ public class CrimeFragment extends Fragment {
|
|||||||
private static final String DIALOG_DATE =
|
private static final String DIALOG_DATE =
|
||||||
"DialogDate";
|
"DialogDate";
|
||||||
private static final int REQUEST_DATE = 0;
|
private static final int REQUEST_DATE = 0;
|
||||||
|
public static final int REQUEST_TIME = 101;
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -64,6 +68,7 @@ public class CrimeFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v)
|
public void onClick(View v)
|
||||||
{
|
{
|
||||||
|
// Open DatePickerFragment
|
||||||
FragmentManager manager = getFragmentManager();
|
FragmentManager manager = getFragmentManager();
|
||||||
DatePickerFragment dialog = DatePickerFragment.newInstance(crime.getDate());
|
DatePickerFragment dialog = DatePickerFragment.newInstance(crime.getDate());
|
||||||
dialog.setTargetFragment(CrimeFragment.this, REQUEST_DATE);
|
dialog.setTargetFragment(CrimeFragment.this, REQUEST_DATE);
|
||||||
@ -107,19 +112,37 @@ public class CrimeFragment extends Fragment {
|
|||||||
|
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
if (resultCode != Activity.RESULT_OK) {
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (requestCode == REQUEST_DATE) {
|
if (requestCode == REQUEST_DATE) {
|
||||||
Date date = (Date) data
|
Date date = (Date) data
|
||||||
.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
|
.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
|
||||||
crime.setDate(date);
|
crime.setDate(date);
|
||||||
|
|
||||||
|
// Open TimePickerFragment
|
||||||
|
DialogFragment timePicker = new TimePickerFragment();
|
||||||
|
timePicker.show(getActivity().getSupportFragmentManager(), "timePicker");
|
||||||
|
|
||||||
updateDate();
|
updateDate();
|
||||||
|
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.putExtra("CRIME", crime);
|
intent.putExtra("CRIME", crime);
|
||||||
getActivity().setResult(777, intent);
|
getActivity().setResult(777, intent);
|
||||||
}
|
}
|
||||||
|
if (requestCode == REQUEST_TIME) {
|
||||||
|
int hour = data.getIntExtra("TIME_HOUR",0);
|
||||||
|
int minute = data.getIntExtra("TIME_MINUTE", 0);
|
||||||
|
Date date = crime.getDate();
|
||||||
|
date.setHours(hour);
|
||||||
|
date.setMinutes(minute);
|
||||||
|
crime.setDate(date);
|
||||||
|
updateDate();
|
||||||
|
getActivity().setResult(778, data);
|
||||||
|
|
||||||
|
}
|
||||||
|
//if (resultCode != Activity.RESULT_OK) {
|
||||||
|
// return;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateDate()
|
private void updateDate()
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
package asdv.lisset.criminalintent;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class CrimeLab {
|
|
||||||
private static CrimeLab crimeLab;
|
|
||||||
private List<Crime> crimes;
|
|
||||||
public static CrimeLab get(Context context) {
|
|
||||||
if (crimeLab == null) {
|
|
||||||
crimeLab = new CrimeLab(context);
|
|
||||||
}
|
|
||||||
return crimeLab;
|
|
||||||
}
|
|
||||||
private CrimeLab(Context context) {
|
|
||||||
crimes = new ArrayList<>();
|
|
||||||
for (int i =0; i < 100; ++i)
|
|
||||||
{
|
|
||||||
Crime crime = new Crime();
|
|
||||||
crime.setTitle("Crime #" + i);
|
|
||||||
crime.setSolved(i % 2 == 0); //every other one
|
|
||||||
crimes.add(crime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public List<Crime> getCrimes() {
|
|
||||||
return crimes;
|
|
||||||
}
|
|
||||||
public Crime getCrime(UUID id) {
|
|
||||||
for (Crime crime : crimes) {
|
|
||||||
if (crime.getId().equals(id)) {
|
|
||||||
return crime;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -35,7 +35,17 @@ public class CrimeListActivity extends SingleFragmentActivity {
|
|||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if (resultCode == 777) {
|
if (resultCode == 777) {
|
||||||
newCrime = (Crime) data.getSerializableExtra("CRIME");
|
newCrime = (Crime) data.getSerializableExtra("CRIME");
|
||||||
int x = 10;
|
for (int i = 0; i < crimes.size(); ++i) {
|
||||||
|
if (crimes.get(i).getId().equals(newCrime.getId())) {
|
||||||
|
crimes.set(i, newCrime);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CrimeListFragment crimeList = (CrimeListFragment) this.getFragment();
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putSerializable("CrimeArrayList", (Serializable) crimes);
|
||||||
|
crimeList.setArguments(bundle);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -67,6 +67,8 @@ public class CrimeListFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//CRIME HOLDER
|
//CRIME HOLDER
|
||||||
|
// ... it holds crimes
|
||||||
|
// CRIMES AGAINST PROGRAMMING
|
||||||
private class CrimeHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
|
private class CrimeHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
|
||||||
private Crime crime;
|
private Crime crime;
|
||||||
private TextView titleTextView;
|
private TextView titleTextView;
|
||||||
|
@ -3,15 +3,18 @@ package asdv.lisset.criminalintent;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.app.TimePickerDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.DatePicker;
|
import android.widget.DatePicker;
|
||||||
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
|
import java.sql.Time;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
@ -47,15 +50,12 @@ public class DatePickerFragment extends DialogFragment
|
|||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState)
|
public Dialog onCreateDialog(Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
// Date date = (Date) getArguments().getSerializable(ARG_DATE);
|
Date date = (Date) getArguments().getSerializable(ARG_DATE);
|
||||||
|
|
||||||
Bundle b = getArguments();
|
Bundle b = getArguments();
|
||||||
this.crimeList = (List<Crime>) b.getSerializable("CrimeArrayList");
|
|
||||||
UUID crimeUUID = (UUID) b.getSerializable("CRIME_ID");
|
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
|
||||||
//calendar.setTime(date);
|
calendar.setTime(date);
|
||||||
int year = calendar.get(Calendar.YEAR);
|
int year = calendar.get(Calendar.YEAR);
|
||||||
int month = calendar.get(Calendar.MONTH);
|
int month = calendar.get(Calendar.MONTH);
|
||||||
int day = calendar.get(Calendar.DAY_OF_MONTH);
|
int day = calendar.get(Calendar.DAY_OF_MONTH);
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package asdv.lisset.criminalintent;
|
||||||
|
|
||||||
|
import static android.app.PendingIntent.getActivity;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.app.TimePickerDialog;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.icu.util.Calendar;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.format.DateFormat;
|
||||||
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
|
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
// Use the current time as the default values for the picker.
|
||||||
|
final Calendar c = Calendar.getInstance();
|
||||||
|
int hour = c.get(Calendar.HOUR_OF_DAY);
|
||||||
|
int minute = c.get(Calendar.MINUTE);
|
||||||
|
|
||||||
|
// Create a new instance of TimePickerDialog and return it.
|
||||||
|
return new TimePickerDialog(getActivity(), this, hour, minute,
|
||||||
|
DateFormat.is24HourFormat(getActivity()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||||
|
// Pass data back to our caller.
|
||||||
|
Intent i = new Intent();
|
||||||
|
i.putExtra("TIME_HOUR", hourOfDay);
|
||||||
|
i.putExtra("TIME_MINUTE", minute);
|
||||||
|
getActivity().setResult(CrimeFragment.REQUEST_TIME, i);
|
||||||
|
//getActivity().finish();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TimePicker xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/timePickerDialog"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="visible" />
|
@ -13,9 +13,10 @@
|
|||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
android:text="Crime Title"
|
android:text="Crime Title"
|
||||||
android:textColor="#000000"
|
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/crime_date"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/imageView_green_cross"
|
app:layout_constraintEnd_toStartOf="@+id/imageView_green_cross"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
BIN
Assignments/FragmentToFragmentMap-5.zip
Normal file
BIN
Assignments/FragmentToFragmentMap-5.zip
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user