2013-11-20 3 views
0

Я хотел бы показать CalendarView в диалоговом окне, в центре экрана. Почему в диалоговом окне? Потому что, когда я открываю CalendarView, это взять все на экране, в то время как я хотел бы, чтобы отобразить его в диалоговом окне, чтобы увидеть фон ..CalendarView в Dialog

Так что мой calendar_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<CalendarView 
    android:id="@+id/calendarView1" 
    android:layout_width="400dp" 
    android:layout_height="400dp" 
    android:layout_marginLeft="150dp"/> 

</RelativeLayout> 

и это мой метод которые открывают мой календарь

public void showCalendar() { 

    Dialog dialog = new Dialog(getBaseContext()); 


//  setContentView(R.layout.calendar_main); 
    cal = (CalendarView) findViewById(R.id.calendarView1); 

    dialog.setContentView(R.layout.calendar_main); 
    cal.setOnDateChangeListener(new OnDateChangeListener() { 

     @Override 
      public void onSelectedDayChange(CalendarView view, int year, int month, 
        int dayOfMonth) { 
       // TODO Auto-generated method stub 

       Toast.makeText(getBaseContext(),"Selected Date is\n\n" 
        +dayOfMonth+" : "+month+" : "+year , 
        Toast.LENGTH_LONG).show(); 

      } 
     }); 
} 

Без диалога открывается календарь с хорошим размером, который я определил в xml. но с диалогами, мое приложение аварии ..

Это мой журнал ошибок:

E/AndroidRuntime(27862): FATAL EXCEPTION: main 
E/AndroidRuntime(27862): java.lang.NullPointerException 
E/AndroidRuntime(27862): at com.pdf.GetViewPDF.showCalendar(GetViewPDF.java:90) 
E/AndroidRuntime(27862): at com.pdf.GetViewPDF.onOptionsItemSelected(GetViewPDF.java:113) 
E/AndroidRuntime(27862): at android.app.Activity.onMenuItemSelected(Activity.java:2453) 
E/AndroidRuntime(27862): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:846) 
E/AndroidRuntime(27862): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153) 
E/AndroidRuntime(27862): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:956) 
E/AndroidRuntime(27862): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:170) 
E/AndroidRuntime(27862): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:85) 
E/AndroidRuntime(27862): at android.view.View.performClick(View.java:3117) 
E/AndroidRuntime(27862): at android.view.View$PerformClick.run(View.java:11941) 
E/AndroidRuntime(27862): at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(27862): at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(27862): at android.os.Looper.loop(Looper.java:132) 
E/AndroidRuntime(27862): at android.app.ActivityThread.main(ActivityThread.java:4123) 
E/AndroidRuntime(27862): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(27862): at java.lang.reflect.Method.invoke(Method.java:491) 
E/AndroidRuntime(27862): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
E/AndroidRuntime(27862): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
E/AndroidRuntime(27862): at dalvik.system.NativeStart.main(Native Method) 

В противном случае, я называю ShowCalendar из пункта Бутон в моем ActionBar и NullPointerException появляются, когда я называю мой слушатель:

cal.setOnDateChangeListener(new OnDateChangeListener() {... 
+0

Оставьте заявку на журнал, пожалуйста. –

+0

Можете ли вы сказать нам, какая линия - линия 90, пожалуйста? (строка исключения нулевого указателя) –

+0

yes, NullPointerException появляется в: cal.setOnDateChangeListener (новый OnDateChangeListener() { –

ответ

2

Попробуйте изменить это:

cal = (CalendarView) findViewById(R.id.calendarView1); 
dialog.setContentView(R.layout.calendar_main); 

к этому:

dialog.setContentView(R.layout.calendar_main); 
cal = (CalendarView) dialog.findViewById(R.id.calendarView1); 
+0

У меня такая же ошибка –

+0

@ThomasTrabelsi Notice ' findViewById() 'в' dialog', а не просто 'findViewById()' в иерархии представлений активности, где нет 'calendarView1'. – laalto

+0

? Спасибо за ваш ответ, но я не совсем понимаю .. я должен поместить findViewById() например: dialo.setContentView ((CalendarView) findViewById (R.id.calendarView1)); –

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