无法将Android ClassCastException列表强制转换为Android.app.Fragment
我在这里看到了这个问题,但没有解决我的问题。我的片段扩展了一个名为无法将Android ClassCastException列表强制转换为Android.app.Fragment,android,exception,android-fragments,casting,Android,Exception,Android Fragments,Casting,我在这里看到了这个问题,但没有解决我的问题。我的片段扩展了一个名为CommonListFragment的类,该类扩展了片段类。承载片段的My Activity扩展了一个名为CommonActivity的类,该类扩展了FragmentActivity类。一切似乎都正常,那么为什么会出现以下错误 AndroidClassCastException列表不能强制转换为Android.app.Fragment 如上所述,Android正在尝试将我的列表类转换为Android.app.Fragment,而实
CommonListFragment
的类,该类扩展了片段类。承载片段的My Activity扩展了一个名为CommonActivity
的类,该类扩展了FragmentActivity
类。一切似乎都正常,那么为什么会出现以下错误
AndroidClassCastException
列表不能强制转换为Android.app.Fragment
如上所述,Android正在尝试将我的列表类转换为Android.app.Fragment
,而实际上它应该转换为Android.support.v4.app.Fragment。MyList类最终扩展了Fragment类(android.support.v4.app.Fragment)。另外,我的最小和目标SDK是Android 2.2。因此,如果我尝试导入“android.app.Fragment”,则会出现编译器错误。那么,我如何强制Android将我的列表识别为Android.support.v4.app.Fragment?
CommonActivity.java
:
ListsContainer.java
:
CommonListFragment
:
列出\u container.xml
:
List.java
:
最新日志
08-06 01:05:00.736: E/AndroidRuntime(15588): Caused by: java.lang.ClassCastException: com.onesix.myApp.Lists cannot be cast to android.app.Fragment
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Fragment.instantiate(Fragment.java:617)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Fragment.instantiate(Fragment.java:592)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Activity.onCreateView(Activity.java:4800)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
有人有什么想法吗?我已经检查了关于这个主题的所有问题,所以…问题:
class="com.onesix.myApp.List"
在类列表中
您正在导入支持库的片段,而不是android的默认片段,这是因为您正在使用片段活动
意味着您必须使用非支持库中的片段
确保所有片段类特别是列表类
导入以下内容:
import android.app.Fragment;
编辑:
我认为您还应该提供堆栈trace@mmlooloo:Logcat addddo您仍然有问题,我有一个建议?我的最低SDK是Android 2.2,因此中的Android.app.Fragment类不仅适用于Android.support.v4.app.Fragment@Mike然后确保您正在导入import android.support.v4.app.Fragment代码>我添加了跟踪和列表class@Mike您的类很好,请尝试将类声明更改为xml,而不是class=“com.onesix.myApp.List”
使用android:name
将类声明更改为xml?不知道你的意思。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/listsFragment"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
class="com.onesix.myApp.Lists" ></fragment>
<fragment
android:id="@+id/listFragment"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"
class="com.onesix.myApp.List" >
<!-- Preview: layout=@layout/details -->
</fragment>
</LinearLayout>
08-06 00:15:44.228: W/ServerManagedPolicy(7472): Licence retry count (GR) missing, grace period disabled
08-06 00:17:35.207: W/dalvikvm(7472): threadid=1: thread exiting with uncaught exception (group=0x41814970)
08-06 00:17:35.287: E/AndroidRuntime(7472): FATAL EXCEPTION: main
08-06 00:17:35.287: E/AndroidRuntime(7472): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.onesix.myApp/com.onesix.myApp.ListsContainer}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2517)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2574)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread.access$600(ActivityThread.java:162)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1413)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.os.Handler.dispatchMessage(Handler.java:99)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.os.Looper.loop(Looper.java:158)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread.main(ActivityThread.java:5789)
08-06 00:17:35.287: E/AndroidRuntime(7472): at java.lang.reflect.Method.invokeNative(Native Method)
08-06 00:17:35.287: E/AndroidRuntime(7472): at java.lang.reflect.Method.invoke(Method.java:525)
08-06 00:17:35.287: E/AndroidRuntime(7472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
08-06 00:17:35.287: E/AndroidRuntime(7472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
08-06 00:17:35.287: E/AndroidRuntime(7472): at dalvik.system.NativeStart.main(Native Method)
08-06 00:17:35.287: E/AndroidRuntime(7472): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
08-06 00:17:35.287: E/AndroidRuntime(7472): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:339)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Activity.setContentView(Activity.java:1944)
08-06 00:17:35.287: E/AndroidRuntime(7472): at com.onesix.myApp.ListsContainer.onCreate(ListsContainer.java:18)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Activity.performCreate(Activity.java:5195)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2473)
08-06 00:17:35.287: E/AndroidRuntime(7472): ... 11 more
08-06 00:17:35.287: E/AndroidRuntime(7472): Caused by: java.lang.ClassCastException: com.onesix.myApp.Lists cannot be cast to android.app.Fragment
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Fragment.instantiate(Fragment.java:617)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Fragment.instantiate(Fragment.java:592)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.app.Activity.onCreateView(Activity.java:4800)
08-06 00:17:35.287: E/AndroidRuntime(7472): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
public class List extends CommonListFragment implements IOnDismissYesNoListener
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
//setContentView(R.layout.list);
View view = inflater.inflate(R.layout.list,container, false);
//super.onCreate(savedInstanceState);
return view;
}
...
}
08-06 01:05:00.736: E/AndroidRuntime(15588): Caused by: java.lang.ClassCastException: com.onesix.myApp.Lists cannot be cast to android.app.Fragment
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Fragment.instantiate(Fragment.java:617)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Fragment.instantiate(Fragment.java:592)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.app.Activity.onCreateView(Activity.java:4800)
08-06 01:05:00.736: E/AndroidRuntime(15588): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
class="com.onesix.myApp.List"
import android.app.Fragment;
<fragment
android:id="@+id/listFragment"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"
android:name="com.onesix.myApp.List" >
<!-- Preview: layout=@layout/details -->
</fragment>