2017-12-28 6 views
3

私はクラスがextends DialogFragmentで、このクラスの中で私はTimePickerDialogを使用しています。TimePickerDialogキャンセルとOKボタンが表示されない

時間ピッカーは機能しますが、下の画像に示すように、問題がCANCELOKのボタンが表示されないことがあります。

ボタンは機能しますが、目に見えません。

ここでは、時間ピッカーに使用されるコードを示します。

public static class TimePickerFragment extends android.support.v4.app.DialogFragment 
     implements TimePickerDialog.OnTimeSetListener { 

    // String used to set both Start and end times 
    String startEndTime; 


    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     // Use the current time as the default values for the picker 
     final Calendar c = Calendar.getInstance(); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 

     Bundle b = getArguments(); 

     if (b != null) { 
      startEndTime = b.getString("startEndTime"); 
     } 


     // Create a new instance of TimePickerDialog and return it 
     return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
    } 


    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     // Do something with the time chosen by the user 
     switch (startEndTime) { 

      case "startTime": 

       break; 

      case "endTime": 

       break; 

      default: 

       break; 

     } 

    } 
} 


public void showTimePickerDialog(String startEndTime) { 

    TimePickerFragment timePickerFragment = new TimePickerFragment(); 

    Bundle b = new Bundle(); 

    b.putString("startEndTime", startEndTime); 

    timePickerFragment.setArguments(b); 

    timePickerFragment.show(context.getSupportFragmentManager(), "timePicker"); 

} 

enter image description here enter image description here

+0

ダイアログ内にTimePickerDialogを開いているようです。だから、私は最初の1つはあなたのダイアログがTimePickerDialogのインスタンスを返すことだと思います。もう1つは実際のTimePickerDialogです。 –

+0

@TentenPonceうん、これは私がボタンのクリックからそれを呼んでいる方法です: 'code' bt_startTime.setOnClickListener(ビュー - > { showTimePickerDialog( "のstartTime"); }); bt_endTime.setOnClickListener(ビュー - > { showTimePickerDialog( "endTime"); }); – bsanehi

+0

同じ問題です、とにかくそれを修正しましたか? –

答えて

2

私は問題を修正し、私は、ボタンのフォントの色が時々白として示していたいくつかの理由のためだと思う理由はわかりません。

問題を修正するために、ボタンのテキストの色を設定するためのダイアログテーマをTimePickerDialogに追加しました。ここで

は私が

<style name="MyTimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="android:textColor">@color/colorAccent</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

をのstyles.xmlするために追加のXMLコードであり、ここで私が変更されたコードです。

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    // Use the current time as the default values for the picker 
    final Calendar c = Calendar.getInstance(); 
    int hour = c.get(Calendar.HOUR_OF_DAY); 
    int minute = c.get(Calendar.MINUTE); 

    Bundle b = getArguments(); 

    if (b != null) { 
     startEndTime = b.getString("startEndTime"); 
    } 


    // Create a new instance of TimePickerDialog and return it 
    return new TimePickerDialog(getActivity(), R.style.MyTimePickerDialogTheme, this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
} 
+0

あなたは私の時間を保存しました、ありがとう! –

関連する問題