我正在构建一个演示应用程序,我希望允许21岁以上的人,我该怎么做。 我想在那里拿DOB并用当年计算年龄。我想使用DatePicker,但看到不同的片段搞砸了。感谢
答案 0 :(得分:0)
这是一个简单的代码,可以指导您实现您的目标。
使用按钮单击启动DatePicker对话框
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.inducesmile.mydatepicker.MainActivity">
<EditText
android:id="@+id/display_dob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"/>
<Button
android:id="@+id/select_dob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:textColor="#000000"
android:textSize="15sp"
android:text="Select your Date of birth"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
然后是Activity类
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private DatePickerFragment datePickerFragment;
private static Calendar dateTime = Calendar.getInstance();
protected static int mYear;
protected static int mMonth;
protected static int mDay;
private static final int allowedDOB = 21;
protected static EditText displayDOB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
displayDOB = (EditText)findViewById(R.id.display_dob);
Button dobButton = (Button) findViewById(R.id.select_dob);
dobButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePickerFragment = new DatePickerFragment();
datePickerFragment.show(getSupportFragmentManager(), "Select Your Birthday");
}
});
}
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Using current date as start Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Get DatePicker Dialog
return new DatePickerDialog(getActivity(), this, mYear, mMonth, mDay);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
dateTime.set(mYear, monthOfYear, dayOfMonth);
long selectDateInMilliSeconds = dateTime.getTimeInMillis();
Calendar currentDate = Calendar.getInstance();
long currentDateInMilliSeconds = currentDate.getTimeInMillis();
SimpleDateFormat simpleDate = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
String strDt = simpleDate.format(dateTime.getTime());
displayDOB.setText(strDt);
if (selectDateInMilliSeconds > currentDateInMilliSeconds) {
Toast.makeText(getActivity(), "Your birthday date must come before taday's date", Toast.LENGTH_LONG).show();
return;
}
long diffDate = currentDateInMilliSeconds - selectDateInMilliSeconds;
Calendar yourAge = Calendar.getInstance();
yourAge.setTimeInMillis(diffDate);
long returnedYear = yourAge.get(Calendar.YEAR) - 1970;
if (returnedYear < allowedDOB) {
Toast.makeText(getActivity(), "Sorry!!! You are not allowed to use this app", Toast.LENGTH_LONG).show();
return;
} else {
// move to another activity page
}
}
}
}
答案 1 :(得分:0)
如果你想限制datepicker本身的年龄,你可以这样做,
<com.deevita.patient.Custom_Layouts.editText
android:id="@+id/dob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:drawableStart="@drawable/ic_date_icon"
android:drawablePadding="@dimen/drawable_padding"
android:focusable="false"
android:hint="@string/birthday"
android:inputType="date"
android:padding="@dimen/padding_common_new"
android:textSize="@dimen/font_small">
</com.deevita.patient.Custom_Layouts.editText>
在java
中添加以下代码 dob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR,-21); // the age you want to limit
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String date = String.valueOf(dayOfMonth) + "-" + String.valueOf(monthOfYear + 1)
+ "-" + String.valueOf(year);
dob.setText(date);
}
}, yy, mm, dd);
datePicker.getDatePicker().setMaxDate(calendar.getTimeInMillis());
datePicker.show();
}
});
答案 2 :(得分:0)
如果用户输入了年龄
驱动程序 = edtdriverage.getText().toString();
else if ( Integer.parseInt(driverage)> 55 || Integer.parseInt(driverage)< 18) {
GlobalMethods.Toast(AddDriverActivity.this, getString(R.string.enter_driver_age_min));
cancel = true;
}
您也可以通过验证方法来实现