Note that there are some explanatory texts on larger screens.

plurals
  1. POError dynamically loading Fragments in Android app
    primarykey
    data
    text
    <p>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. </p> <p>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). </p> <p>here is my layout </p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"&gt; &lt;fragment class="com.android.app.Examples$TitlesFragment" android:id="@+id/titles" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" /&gt; &lt;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" /&gt; &lt;/LinearLayout&gt; </code></pre> <p>and here are relevant methods from the activity where I try to create and update</p> <pre><code> 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; } } </code></pre> <p>Everything seems to be going fine and then I get this error :</p> <pre><code>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 </code></pre> <p>thanks in advance for any help</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload