use an alertdialog instead of a fragment

This commit is contained in:
tibbi 2016-03-21 23:36:25 +01:00
parent bbd3d41a6b
commit ce0dc48061
5 changed files with 36 additions and 84 deletions

View File

@ -1,7 +1,6 @@
package com.simplemobiletools.calendar; package com.simplemobiletools.calendar;
public class Constants { public class Constants {
public static final String DATE = "date";
public static final float LOW_ALPHA = .2f; public static final float LOW_ALPHA = .2f;
public static final float HIGH_ALPHA = .9f; public static final float HIGH_ALPHA = .9f;

View File

@ -1,13 +1,17 @@
package com.simplemobiletools.calendar; package com.simplemobiletools.calendar;
import android.content.DialogInterface;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.view.View; import android.view.View;
import android.widget.DatePicker;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import org.joda.time.DateTime; import org.joda.time.DateTime;
@ -19,7 +23,7 @@ import butterknife.BindDimen;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
public class MainActivity extends AppCompatActivity implements MyDatePickerDialog.DatePickedListener, Calendar { public class MainActivity extends AppCompatActivity implements Calendar {
@Bind(R.id.left_arrow) ImageView leftArrow; @Bind(R.id.left_arrow) ImageView leftArrow;
@Bind(R.id.right_arrow) ImageView rightArrow; @Bind(R.id.right_arrow) ImageView rightArrow;
@Bind(R.id.table_month) TextView monthTV; @Bind(R.id.table_month) TextView monthTV;
@ -93,16 +97,30 @@ public class MainActivity extends AppCompatActivity implements MyDatePickerDialo
@OnClick(R.id.table_month) @OnClick(R.id.table_month)
public void pickMonth() { public void pickMonth() {
final MyDatePickerDialog dialog = new MyDatePickerDialog(); final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this, R.style.MyAlertDialog);
final Bundle bundle = new Bundle(); final View view = getLayoutInflater().inflate(R.layout.date_picker, null);
bundle.putString(Constants.DATE, calendar.getTargetDate().toString()); final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);
dialog.setArguments(bundle); hideDayPicker(datePicker);
dialog.show(getSupportFragmentManager(), "datepicker");
final DateTime dateTime = new DateTime(calendar.getTargetDate().toString());
datePicker.init(dateTime.getYear(), dateTime.getMonthOfYear() - 1, 1, null);
alertDialog.setView(view);
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
final int month = datePicker.getMonth() + 1;
final int year = datePicker.getYear();
calendar.updateCalendar(new DateTime().withMonthOfYear(month).withYear(year));
}
});
alertDialog.show();
} }
@Override private void hideDayPicker(DatePicker datePicker) {
public void onDatePicked(DateTime dateTime) { final LinearLayout ll = (LinearLayout) datePicker.getChildAt(0);
calendar.updateCalendar(dateTime); final LinearLayout ll2 = (LinearLayout) ll.getChildAt(0);
ll2.getChildAt(0).setVisibility(View.GONE);
} }
@Override @Override

View File

@ -1,52 +0,0 @@
package com.simplemobiletools.calendar;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import org.joda.time.DateTime;
public class MyDatePickerDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final View view = getActivity().getLayoutInflater().inflate(R.layout.date_picker, null);
final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);
hideDayPicker(datePicker);
final Bundle bundle = getArguments();
if (bundle != null && bundle.containsKey(Constants.DATE)) {
final DateTime dateTime = new DateTime(bundle.getString(Constants.DATE));
datePicker.init(dateTime.getYear(), dateTime.getMonthOfYear() - 1, 1, null);
}
builder.setView(view);
view.findViewById(R.id.date_picker_ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DatePickedListener listener = (DatePickedListener) getActivity();
final int month = datePicker.getMonth() + 1;
final int year = datePicker.getYear();
listener.onDatePicked(new DateTime().withMonthOfYear(month).withYear(year));
dismiss();
}
});
return builder.create();
}
private void hideDayPicker(DatePicker datePicker) {
final LinearLayout ll = (LinearLayout) datePicker.getChildAt(0);
final LinearLayout ll2 = (LinearLayout) ll.getChildAt(0);
ll2.getChildAt(0).setVisibility(View.GONE);
}
public interface DatePickedListener {
void onDatePicked(DateTime dateTime);
}
}

View File

@ -1,23 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_horizontal">
<DatePicker <DatePicker
android:id="@+id/date_picker" android:id="@+id/date_picker"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:calendarViewShown="false" android:calendarViewShown="false"
android:datePickerMode="spinner"/> android:datePickerMode="spinner"/>
<Button
android:id="@+id/date_picker_ok"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/date_picker"
android:layout_alignRight="@id/date_picker"
android:layout_below="@id/date_picker"
android:text="OK"/>
</RelativeLayout>

View File

@ -28,4 +28,6 @@
<item name="android:background">@drawable/button</item> <item name="android:background">@drawable/button</item>
</style> </style>
<style name="MyAlertDialog" parent="Base.Theme.AppCompat.Light.Dialog.Alert"/>
</resources> </resources>