i am trying to make a simple application based on the Android API FragmentLayout. Instead of changing a simple TextView I want to be able to switch between a group of classes I have created which extend the Fragment class.
I can statically create any of my examples in my layout.xml file and the Fragment runs just how I want it to. I have read that you can't replace Fragments which have been created this way though so the example app seemed relevant since it dynamically loads the details text. The main difference is that I don't want to just create a new generic Fragment in which I load some text from a file, I want to load entire class files (again, which are Fragments themselves and contain there own SurfaveViews).
here is my layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment class="com.android.app.Examples$TitlesFragment"
android:id="@+id/titles" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent" />
<FrameLayout android:id="@+id/fragment_to_switch_dynamically" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
</LinearLayout>
and here are relevant methods from the activity where I try to create and update
void showDetails(int index) {
mCurCheckPosition = index;
if (mDualPane) {
// We can display everything in-place with fragments, so update
// the list to highlight the selected item and show the data.
getListView().setItemChecked(index, true);
if (mShownCheckPosition != mCurCheckPosition) {
// If we are not currently showing a fragment for the new
// position, we need to create and install a new one.
PApplet pa = getProcessingSketchByIndex(index);
// Execute a transaction, replacing any existing fragment
// with this one inside the frame.
FragmentTransaction ft = getFragmentManager()
.beginTransaction();
ft.replace(R.id.processing, pa);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
mShownCheckPosition = index;
}
} else {
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
// Intent intent = new Intent();
// intent.setClass(getActivity(), DetailsActivity.class);
// intent.putExtra("index", index);
// startActivity(intent);
}
}
private PApplet getProcessingSketchByIndex(int index) {
PApplet pa = null;
switch (index) {
case 0:
pa = new Lights1();
break;
case 1:
pa = new Lights2();
break;
case 2:
pa = new Reflection();
break;
case 3:
pa = new Rotate();
break;
case 4:
pa = new Spot();
break;
case 5:
break;
default:
break;
}
return pa;
}
}
Everything seems to be going fine and then I get this error :
E/AndroidRuntime(31393): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.processing.app/com.android.processing.app.ProcessingExamples}: java.lang.IllegalArgumentException: No view found for id 0x7f050001 for fragment Lights1{407bf678 #1 id=0x7f050001}
E/AndroidRuntime(31393): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
E/AndroidRuntime(31393): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
E/AndroidRuntime(31393): at android.app.ActivityThread.access$500(ActivityThread.java:122)
E/AndroidRuntime(31393): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
E/AndroidRuntime(31393): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(31393): at android.os.Looper.loop(Looper.java:132)
E/AndroidRuntime(31393): at android.app.ActivityThread.main(ActivityThread.java:4123)
E/AndroidRuntime(31393): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(31393): at java.lang.reflect.Method.invoke(Method.java:491)
E/AndroidRuntime(31393): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime(31393): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime(31393): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(31393): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f050001 for fragment Lights1{407bf678 #1 id=0x7f050001}
E/AndroidRuntime(31393): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:770)
E/AndroidRuntime(31393): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:977)
E/AndroidRuntime(31393): at android.app.BackStackRecord.run(BackStackRecord.java:638)
E/AndroidRuntime(31393): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1309)
E/AndroidRuntime(31393): at android.app.Activity.performStart(Activity.java:4406)
E/AndroidRuntime(31393): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1788)
E/AndroidRuntime(31393): ... 11 more
thanks in advance for any help