各位大侠:小弟在使用Android 3.0新增日历控件的时候遇到如下问题,希望牛人给予解答,万分感谢!
 在main.xml布局中添加一个日历控件,Activity不能正常显示,甚至连运行也不可以!但是,在不改变除了main.xml文件之外的其他文件的前提下,换成按钮,时钟,textview等其他任何控件,都能正常显示,出现的错误及相应的文件如下所示:
05-25 07:35:38.260: ERROR/AndroidRuntime(8671): Uncaught handler: thread main exiting due to uncaught exception
05-25 07:35:38.432: ERROR/AndroidRuntime(8671): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.song.android.calendar/com.song.android.calendar.CalendarTest}: android.view.InflateException: Binary XML file line #12: Error inflating class CalendarView
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.os.Looper.loop(Looper.java:123)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread.main(ActivityThread.java:4363)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at java.lang.reflect.Method.invokeNative(Native Method)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at java.lang.reflect.Method.invoke(Method.java:521)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at dalvik.system.NativeStart.main(Native Method)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class CalendarView
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.Activity.setContentView(Activity.java:1622)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at com.song.android.calendar.CalendarTest.onCreate(CalendarTest.java:11)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     ... 11 more
05-25 07:35:38.432: ERROR/AndroidRuntime(8671): Caused by: java.lang.ClassNotFoundException: android.view.CalendarView in loader dalvik.system.PathClassLoader@44d86990
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.createView(LayoutInflater.java:466)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
05-25 07:35:38.432: ERROR/AndroidRuntime(8671):     ... 20 more<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.song.android.calendar"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".CalendarTest"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>    </application>
    <uses-permission android:name="android.permission.READ_CALENDAR"/> 
    <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <CalendarView 
    android:id="@+id/calendarView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
    </CalendarView>
</LinearLayout>package com.song.android.calendar;import android.app.Activity;
import android.os.Bundle;public class CalendarTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

解决方案 »

  1.   

    XML文件哪错误了?他提示那个定义日历的地方出错,但是那只有个id,和宽高啊!没发现有啥错误!
      

  2.   

        <CalendarView 
        android:id="@+id/calendarView1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
        </CalendarView>package也要写上
    <xx.xx.CalendarView 
      

  3.   

     问一下,这个package是哪的?Manifest.xml?还是calendarView对应的.java类里的import?
      

  4.   

    那个android:layout_width="match_parent"
            android:layout_height="match_parent"