calendarViewShown n'est pas à l'honneur sur Android 5.0 Lollipop
Je suis en train de travailler à travers Le Big Nerd Ranch Guide Android. Dans le
affectation de l'Intention Criminelle, je suis en utilisant DatePicker avec la suite
de mise en page.
Sur la pré-5.0 appareils, le calendrier n'est pas indiqué dans DatePicker tel que défini dans
la mise en page, mais Android 5.0 ignore ce et affiche un calendrier. Aucune idée
ce qui pourrait se passer ici?
Code complet est disponible sur Github.
dialog_date.xml
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_date_datePicker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:calendarViewShown="false" >
</DatePicker>
DatePickerFragment.java
package com.sudhirkhanger.android.criminalintent;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
public class DatePickerFragment extends DialogFragment {
public static final String EXTRA_DATE = "com.sudhirkhanger.android.criminalintent.date";
private Date mDate;
public static DatePickerFragment newInstance(Date date) {
Bundle args = new Bundle();
args.putSerializable(EXTRA_DATE, date);
DatePickerFragment fragment = new DatePickerFragment();
fragment.setArguments(args);
return fragment;
}
private void sendResult(int resultCode) {
if (getTargetFragment() == null)
return;
Intent i = new Intent();
i.putExtra(EXTRA_DATE, mDate);
getTargetFragment().onActivityResult(getTargetRequestCode(),
resultCode, i);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mDate = (Date) getArguments().getSerializable(EXTRA_DATE);
//Create a Calendar to get the year, month, and day
final Calendar calendar = Calendar.getInstance();
//calendar.setTime(mDate);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
View v = getActivity().getLayoutInflater().inflate(
R.layout.dialog_date, null);
DatePicker datePicker = (DatePicker) v
.findViewById(R.id.dialog_date_datePicker);
datePicker.init(year, month, day, new OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year, int month,
int day) {
//Translate year, month, day into a Date object using a
//calendar
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
mDate = new GregorianCalendar(year, month, day, hour, minute)
.getTime();
//Update argument to preserve selected value on rotation
getArguments().putSerializable(EXTRA_DATE, mDate);
}
});
return new AlertDialog.Builder(getActivity())
.setView(v)
.setTitle(R.string.date_picker_title)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
sendResult(Activity.RESULT_OK);
}
}).create();
}
}
J'ai exactement le même problème.
Salut, Cela a été la réponse ici: stackoverflow.com/questions/26854762/....
Merci David. C'est bizarre que Google n'a pas de mise à jour de la documentation.
Salut, Cela a été la réponse ici: stackoverflow.com/questions/26854762/....
Merci David. C'est bizarre que Google n'a pas de mise à jour de la documentation.
OriginalL'auteur Sudhir Khanger | 2014-11-30
Vous devez vous connecter pour publier un commentaire.
La solution a été posté ici
Vous devez utiliser à la fois
android:calendarViewShown="false"
etandroid:datePickerMode="spinner"
.Cela résout.
oh je viens de voir encore plus. il donne une erreur:
rror: No resource identifier found for attribute 'datePickerMode' in package 'android'
Avez-vous trouver de la documentation?
J'ai juste fait ce que vous avez posté et qui ne fonctionne pas.
une meilleure solution, pour éviter l'avertissement, serait d'avoir un autre dossier (mise en page-v21) pour l'api de niveau 21 et au-dessus de que sur ici
OriginalL'auteur Sudhir Khanger
Ci-dessous le code a fonctionné pour moi
OriginalL'auteur Nithin Raja