gpt4 book ai didi

android - 在 Android 应用程序中动态加载 fragment 时出错

转载 作者:行者123 更新时间:2023-11-30 04:32:56 25 4
gpt4 key购买 nike

我正在尝试制作一个基于 Android API FragmentLayout 的简单应用程序。我不想更改简单的 TextView,而是希望能够在我创建的一组扩展 Fragment 类的类之间切换。

我可以在我的 layout.xml 文件中静态创建我的任何示例,并且 fragment 按照我想要的方式运行。我已经读到你不能替换以这种方式创建的 fragment ,所以示例应用程序似乎是相关的,因为它动态加载了详细信息文本。主要区别在于我不想只创建一个新的通用 fragment ,在其中我从文件加载一些文本,我想加载整个类文件(同样,它们本身就是 fragment 并包含自己的 SurfaveViews)。

这是我的布局

<?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>

这里是我尝试创建和更新的 Activity 中的相关方法

    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;
}
}

一切似乎都很顺利,然后我收到这个错误:

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

在此先感谢您的帮助

最佳答案

可能是因为 View 的 XML 中不存在“R.id.processing”。

在你的 XML 中我看到了

<FrameLayout android:id="@+id/fragment_to_switch_dynamically">

那么也许可以将 R.id.processing 更改为 R.id.fragment_to_switch_dynamically ?

关于android - 在 Android 应用程序中动态加载 fragment 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com