私のアプリにはAndroid 6まで常に携帯電話とタブレットの両方で動作するDatePickerがあります.Samsung Galaxy 7 Edge tテストが有効で、ダイアログが表示されません。AndroidのDatePickerダイアログがAndroid 6に表示されない
マニフェストでminとtargetのsdkバージョンをそれぞれ11と21に設定しました。
私はDialogFragmentを使用しているはずですが、下記のコードがAndroid 6に表示されない理由がありますか?このコードは2.3.6、4.x、および5.xで正常に動作します。
次のログが実行されているので、.show()メソッドが呼び出されたことがわかります。私が試してみました
Log.e(TAG, "Just executed dialog.show() and at the end of showDateTimeDialog method");
[EDIT] 物事は以下のとおりです。
がstyle.xmlにスタイルを追加し、そのスタイルを参照する別のダイアログconstuctorを呼び出します。これは、Android 6のダイアログを表示しますが、残念ながら、ボタン付きの私のレイアウトを使用するのは私のカスタムではありません。
<style name="MyDialogStyle" parent="Theme.AppCompat.Light">
。
dialog = new Dialog(MenuActivity2.this, R.style.MyDialogStyle);
dialog.setContentView(R.layout.datetimepickerunalloc);
おかげ
Button Set;
Button ReSet;
Button Cancel;
DatePicker DPic;
TextView Date;
private ViewSwitcher switcher;
static final int DATE_TIME_DIALOG_ID = 999;
Dialog dialog;
TextView dialogMessage;
DateTime timeSetOnSpinner;
public void showDateTimeDialog() {
// final Calendar c = Calendar.getInstance();
final SimpleDateFormat dfDate = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
dialog = new Dialog(MenuActivity2.this);
dialog.setContentView(R.layout.datetimepickerunalloc);
DPic = (DatePicker) dialog.findViewById(R.id.DatePicker);
Set = ((Button) dialog.findViewById(R.id.SetDateTime));
Set.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
c.set(DPic.getYear(), DPic.getMonth(), DPic.getDayOfMonth());
timeSetOnSpinner = new DateTime(c);
DateTimeFormatter fmt = DateTimeFormat.forPattern("d-MMM-Y");
String formattedDate = fmt.print(timeSetOnSpinner);
formattedDate = formattedDate.trim();
//Toast.makeText(MenuActivity2.this, "date = " + formattedDate, Toast.LENGTH_LONG).show();
final Intent intent = new Intent(MenuActivity2.this, ShowUnallocatedCallsActivity.class);
intent.putExtra("unallocdate", formattedDate);
startActivity(intent);
}// end of onClick
});
ReSet = ((Button) dialog.findViewById(R.id.ResetDateTime));
ReSet.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
DPic.updateDate(c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
}
});
dialog.setTitle("Unallocated calls date");
try {
ReSet.performClick();
dialog.show();
Log.e(TAG, "Just executed dialog.show() and at the end of showDateTimeDialog method");
} catch (Exception e) {
// ignore
}
}// showDateTimeDialog()
。
これは、カスタムダイアログ
<?xml version="1.0" encoding="UTF-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="700dp"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textviewdatetimepickermessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<LinearLayout
android:id="@+id/DateLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >
<DatePicker
android:id="@+id/DatePicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip" />
</LinearLayout>
<LinearLayout
android:id="@+id/ControlButtons"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip" >
<Button
android:id="@+id/SetDateTime"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@android:string/ok" />
<Button
android:id="@+id/ResetDateTime"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Reset" />
<!--
<Button
android:layout_height="wrap_content"
android:layout_width="0dip"
android:id="@+id/CancelDialog"
android:text="@android:string/cancel"
android:layout_weight="1"/>
-->
</LinearLayout>
</LinearLayout>
</ScrollView>
のための私のレイアウトです。
dialog.show()のキャッチで// ignoreの代わりにスタックトレースを出力できますか? Android 6で例外が発生したかどうかを確認してください。 – androidLover
@androidLoverこんにちは、try/catchが削除されたスタックトレースを投稿しました。例外はスローされません。 – turtleboy