2016-04-20 24 views
1

私のアプリには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> 

のための私のレイアウトです。

+0

dialog.show()のキャッチで// ignoreの代わりにスタックトレースを出力できますか? Android 6で例外が発生したかどうかを確認してください。 – androidLover

+0

@androidLoverこんにちは、try/catchが削除されたスタックトレースを投稿しました。例外はスローされません。 – turtleboy

答えて

1

私は最終的に、テーマargに渡された別のコンストラクタを使用してダイアログを表示しました。

dialog = new Dialog(MenuActivity2.this, R.style.AppBaseTheme); 
関連する問題