2012-09-10 44 views
0

我正在使用DatePickerDialog來提示用戶輸入日期。它的工作原理在模擬器和我的三星Galaxy Nexus的罰款,但onDateSet不會被調用我的三星Galaxy Tab 2onDateSet不會從平板電腦上的DatePickerDialog調用

我注意到,該對話是更大,顯示除了正常的旋轉視圖的日曆。這可能是問題嗎?

下面是一些代碼:

import java.util.Calendar; 
import java.util.Date; 

import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.widget.DatePicker; 

import com.cbit.gtbetapp.R; 
import com.cbit.gtbetapp.gui.racedata.MeetingDataActivity; 
import com.cbit.gtbetapp.gui.racedata.MeetingListFragment; 
import com.cbit.gtbetapp.logic.Utility; 

public class DatePickerFragment extends DialogFragment implements 
     DatePickerDialog.OnDateSetListener { 

    protected Date date = null; 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     // Use the current date as the default date in the picker 
     final Calendar c = Utility.getToday(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     date = c.getTime(); 

     // Create a new instance of DatePickerDialog and return it 
     DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day) { 
      @Override 
      public void onDateChanged(DatePicker view, int year, int month, int day) { 
       super.onDateChanged(view, year, month, day); 
       setTitle(getString(R.string.date_picker_title)); 
      } 
     }; 
     dialog.setTitle(getString(R.string.date_picker_title)); 

     dialog.setButton(DatePickerDialog.BUTTON_POSITIVE, 
       getString(android.R.string.ok), new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 

         Intent intent = new Intent(getActivity(), MeetingDataActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         intent.putExtra(MeetingListFragment.EXTRA_DATE, date.getTime()); 
         startActivity(intent); 
        } 
       }); 
     dialog.setButton(DatePickerDialog.BUTTON_NEGATIVE, 
       getString(R.string.button_cancel), 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 
     return dialog; 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     Calendar c = Calendar.getInstance(); 
     c.clear(); 
     c.set(Calendar.YEAR, year); 
     c.set(Calendar.MONTH, month); 
     c.set(Calendar.DAY_OF_MONTH, day); 
     date = c.getTime(); 
    } 
} 

這是什麼原因?平板電腦中的錯誤?我錯過了什麼嗎?任何人都可以想到解決方法嗎?

非常感謝!

回答

4

我很驚訝它的工作。當默認onClick行爲被執行時,onDateSet()被調用,但由於您完全設置了新按鈕,因此您將擺脫原始行爲。你可以check the code out。你爲什麼不開始在onDateSet()的活動?如果你想要設置文本,那麼你可以得到每個按鈕,而不是設置它們(getButton(BUTTON_POSITIVE))。

此外,請注意,果凍豆中有一個新的錯誤,onDateSet將被調用兩次,即使您按回來也會被調用,並且他們還刪除了默認的「取消」按鈕。去搞清楚。

+0

這是一個[解決](http://stackoverflow.com/questions/11444238/jelly-bean-datepickerdialog-is-there-a-way-to-cancel/11493752#11493752),圍繞我提到的問題。 – dmon

+0

謝謝你指點我那個偉大的選擇!它完美的工作! – cit

相關問題