I am developing an application divided in one library and two applications : 1 for phones, the other for tablets. A lot of code and layout is defined in the library, and only a few parts are defined in the applications.
I'm using fragments in an Activity
, with a ViewPager
for the phone version (layout and activity defined in the library, used with no change in the phone application).
For the tablet version, I want to show my fragments (2) side by side, and not in a ViewPager
, so I tried to build an XML layout like that :
<....>
<LinearLayout
android:id="@+id/fragmentsParent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/f1"
android:class="com.test.Fragment1"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/f2"
android:name="com.test.Fragment2"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
</....>
My problem is that the code is working on my phone application, but not on my tablet application. On this one, I get this exception stack :
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)
07-11 17:41:14.032: E/AndroidRuntime(14754): ... 11 more
07-11 17:41:14.032: E/AndroidRuntime(14754): Caused by: java.lang.ClassCastException: com.test.Fragment1 cannot be cast to android.app.Fragment
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Fragment.instantiate(Fragment.java:560)
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Fragment.instantiate(Fragment.java:535)
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.app.Activity.onCreateView(Activity.java:4168)
07-11 17:41:14.032: E/AndroidRuntime(14754): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)
The error messages talk about android.app.Fragment
where I Would expect android.support.v4.app.Fragment
.
After searching the web, I checked these points :
android.support.v4.app.FragmentActivity
,android.support.v4.app.Fragment
,Your Activity have to be extended by FragmentActivity.
You probably got wrong (mixed) imports and instad of
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
you have
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
hence the cast issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With