2012-10-17 1 views
2

У меня есть кнопка, которая подтягивает фрагмент DatePicker, но я не могу понять, как изменить вид в зависимости от выбранной даты. Я поместил метод onDateSet в свой main.java, который является активностью, вызывающей фрагмент, с намерением изменить вид внутри этого метода, но ничего не делает, когда изменяется дата, и я не уверен, что я делаю неправильно.DatePicker изменение вид после даты выбрано

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     // Create a new instance of DatePickerDialog and return it 
     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     // TODO Auto-generated method stub 
    } 

и мой MainScreen.java является

public class MainScreen extends FragmentActivity implements DatePickerDialog.OnDateSetListener { 

    static final int DATE_DIALOG_ID = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_screen); 
    } 

    public void showDatePickerDialog(View v) { 
     DatePickerFragment newFragment = new DatePickerFragment(); 
     newFragment.show(getFragmentManager(), "datePicker"); 
    } 

    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 

     Intent intent = new Intent(this, January_1.class); 
     startActivity(intent); 
    } 
} 
+0

Почему бы» t вы переместите код 'onDateSet()' из основного Actvity в ваш DatePickerFragment? – Sam

+0

@Sam С тех пор как вы избили меня до этого, продолжайте и поставьте это как ответ. Он установил, что его слушатель является «этим», который является объектом «Фрагмент», а его код находится в «Деятельности». – Eric

ответ

1

Вы должны использовать onDateSet() слушателя в вашем DatePickerFragement:

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     // Create a new instance of DatePickerDialog and return it 
     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Activity activity = getActivity(); 
     Intent intent = new Intent(activity, January_1.class); 
     activity.startActivity(intent); 
    } 
} 

Добавлено от комментариев

Вы используете неправильный индекс для monthOfYear, от the documentation:

monthOfYear Месяц, который был установлен (0-11) для совместимости с Calendar.

Так январь 0, февраль 1, и т.д. ...
Чтобы ограничить какой-либо путаницы, я предлагаю использовать названия месяцев из класса Calendar и переключатель заявление:

Intent intent; 
switch(monthOfYear) { 
case Calendar.JANUARY: 
    intent = new Intent(activity, January_1.class); 
    break; 
case Calendar.FEBRUARY: 
    // etc... 
} 
activity.startActivity(intent); 
+0

Спасибо, теперь это работает, но я пытаюсь заставить его перейти на другое действие для каждой страницы, я использовал оператор if, но я думаю, что я делаю это неправильно. – user1741292

+0

$ общественного недействительными onDateSet (вид DatePicker, внутр год, внутр месяц, \t \t \t INT DayOfMonth) { \t \t если (месяц == 1) { \t \t активность активность = getActivity(); \t \t Intent intent = new Intent (activity, January_1.class); \t startActivity (намерение); \t \t} \t} $ – user1741292

+0

О, я вижу, как вы это сказали, пропустил конец вашего сообщения. Но когда я набираю ваше намерение и включаю его, говорит, что активность не может быть разрешена в переменную и хочет, чтобы я менял активность на что-то другое при каждом вводе кода – user1741292

 Смежные вопросы

  • Нет связанных вопросов^_^