我有一个片段活动,其中包含listview。单击ListView的项目我想加载片段并关闭片段活动。
我尝试按以下方式实施,但在我尝试加载FrameLayout
时收到Fragment
id的错误。
logcat的:
09-03 16:49:57.321: E/AndroidRuntime(1740): FATAL EXCEPTION: main 09-03 16:49:57.321: E/AndroidRuntime(1740): java.lang.IllegalArgumentException: No view found for id 0x7f0a0045 (com.zeal.peekaboo:id/fragmentswitcherframe) for fragment OtherProfileFragment{4a31cb00 #0 id=0x7f0a0045} 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.os.Handler.handleCallback(Handler.java:587) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.os.Handler.dispatchMessage(Handler.java:92) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.os.Looper.loop(Looper.java:123) 09-03 16:49:57.321: E/AndroidRuntime(1740): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-03 16:49:57.321: E/AndroidRuntime(1740): at java.lang.reflect.Method.invokeNative(Native Method) 09-03 16:49:57.321: E/AndroidRuntime(1740): at java.lang.reflect.Method.invoke(Method.java:521) 09-03 16:49:57.321: E/AndroidRuntime(1740): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-03 16:49:57.321: E/AndroidRuntime(1740): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-03 16:49:57.321: E/AndroidRuntime(1740): at dalvik.system.NativeStart.main(Native Method)
Listview ItemClick
m_lvList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adptr, View view, int pos, long id) { m_slistItemId = String.valueOf(m_lookArryList.get(pos) .getM_userId()); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment llf = new OtherProfileFragment(); ft.replace(R.id.fragmentswitcherframe, llf); ft.commit(); finish(); } });
请指导我这个。我无法理解出了什么问题?
任何帮助将不胜感激。
感谢。
答案 0 :(得分:0)
“我无法理解出现了什么问题?”
如果我理解这是正确的,那么你在FragmentActivity的布局中加载一个Fragment并在commit()之后立即关闭这个Activity,用于finish()。
我不知道你想要实现什么,但你永远不会看到片段。当Activity被销毁时它将被销毁,这是因为finish()调用而发生的。此行为是片段lifecycle的一部分。片段不能单独存在,只能将Activity作为宿主存在。
您收到该错误,因为片段事务的commit()调用是异步的。表示通过finish()关闭Activity和布局,但事务的commit()仍会尝试将Fragment加载到布局中。
编辑:
如果你想完成()拥有ListView的Activity,则通过Intent将结果传递给另一个Activity。在此活动中,使用所需的片段构建您的视图并将结果传递给它。
也许您想看看Master Detail Flow Pattern,这正是针对该用例的。教程使用Eclipse的标准模板。您可以从中获取想法并进行修改。