2013-02-08 6 views
1

Я начинаю программировать на Android. Я пытаюсь добавить календарь (https://github.com/square/android-times-square) во фрагментеРеализация с TimesSquare в фрагменте

public class CalendarFragment extends Fragment { 

private static final String TAG = "CalendarFragment"; 

View viewer; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     viewer = (View) inflater.inflate(R.layout.cal, container, 
       false); 
    Calendar nextYear = Calendar.getInstance(); 
    nextYear.add(Calendar.YEAR, 1); 

    final CalendarPickerView calendar = (CalendarPickerView) findViewById(R.id.calendar); 
    calendar.init(new Date(), new Date(), nextYear.getTime()); 

    Button b = (Button) findViewById(R.id.done_button); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
     Log.d(TAG, "Selected time in millis: " + calendar.getSelectedDate().getTime()); 
     String toast = "Selected: " + calendar.getSelectedDate().getTime(); 
     Toast.makeText(CalendarFragment.this, toast, LENGTH_SHORT).show(); 
     } 
    }); 
     return viewer; 

    } 

cal.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <com.squareup.timessquare.CalendarPickerView 
     android:id="@+id/calendar" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 
     android:paddingBottom="16dp" 
     android:scrollbarStyle="outsideOverlay" 
     android:clipToPadding="false" 
     android:background="#FFFFFF" 
     /> 

    <Button 
     android:id="@+id/done_button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Done" 
     /> 

</LinearLayout> 

Я думаю, что проблема заключается в XML, а также несколько ошибок в Java. Пожалуйста, помогите мне. Спасибо

+0

какие ошибки вы видите? он правильно компилируется, но падает? Если так, разместите логарифм. Или он даже не компилируется? если так, разместите перечисленные ошибки и какие строки они произойдут. – FoamyGuy

+0

Он показывает: «Метод findViewById (int) не определен для типа CalendarFragment» и «Метод makeText (Context, CharSequence, int) в типе Toast не применим для аргументов (CalendarFragment, String, int)». –

ответ

3

Я обновил код для вашего фрагмента.

public class CalendarFragment extends Fragment { 

private static final String TAG = "CalendarFragment"; 

View viewer; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     viewer = (View) inflater.inflate(R.layout.cal, container, 
       false); 
    Calendar nextYear = Calendar.getInstance(); 
    nextYear.add(Calendar.YEAR, 1); 

    final CalendarPickerView calendar = (CalendarPickerView) viewer.findViewById(R.id.calendar); 
    calendar.init(new Date(), new Date(), nextYear.getTime()); 

    Button b = (Button) viewer.findViewById(R.id.done_button); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
     Log.d(TAG, "Selected time in millis: " + calendar.getSelectedDate().getTime()); 
     String toast = "Selected: " + calendar.getSelectedDate().getTime(); 
     Toast.makeText(getActivity(), toast, LENGTH_SHORT).show(); 
     } 
    }); 
     return viewer; 

    } 

В частности,

final CalendarPickerView calendar = (CalendarPickerView) findViewById(R.id.calendar); 

должно быть окончательным календарь CalendarPickerView = (CalendarPickerView) viewer.findViewById (R.id.calendar);

и

Button b = (Button) findViewById(R.id.done_button); 

должно быть

Button b = (Button) viewer.findViewById(R.id.done_button); 

и, наконец,

Toast.makeText(CalendarFragment.this, toast, LENGTH_SHORT).show(); 

должно быть

Toast.makeText(getActivity(), toast, LENGTH_SHORT).show(); 
+1

Спасибо .. Это работает .. –

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