
我几天来一直在努力使用Android 3.0 SDK的片段概念,并且认为我会尝试使用StackOverflow ….
我有一个简单的(概念证明)应用程序:
这是我的主要布局:
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <relativeLayout androID:ID="@+ID/relativeLayout1" androID:layout_alignParentBottom="true" androID:layout_wIDth="match_parent" androID:layout_height="200dp"><fragment androID:name="com.owentech.simplefragmentswap.staticfragment" androID:ID="@+ID/fragment1" androID:layout_weight="1" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent"/></relativeLayout><FrameLayout androID:ID="@+ID/frameLayout1" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" androID:layout_wIDth="match_parent" androID:layout_above="@+ID/relativeLayout1"></FrameLayout></relativeLayout>我直接在XML中显示一个片段(staticfragment),这很好用.
使用framelayout我想在create上添加一个XML片段(fragment1).
这是片段1:
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <button androID:layout_height="wrap_content" androID:ID="@+ID/button1" androID:layout_alignParenttop="true" androID:layout_wIDth="match_parent" androID:text="Fragment 1"></button></relativeLayout>这是我的主要活动:
import androID.app.Activity;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.support.v4.app.FragmentActivity;import androID.support.v4.app.FragmentTransaction;public class mainActivity extends FragmentActivity {/** Called when the activity is first created. */@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); // Create new fragment and transaction Fragment newFragment = new fragment1(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container vIEw with this fragment, // and add the transaction to the back stack //transaction.replace(R.ID.frameLayout1, newFragment); transaction.add(R.ID.frameLayout1, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit();}}这会导致力在启动时关闭.
这是logcat:
05-18 09:49:23.073: INFO/ActivityManager(71): Starting activity: Intent { act=androID.intent.action.MAIN cat=[androID.intent.category.LAUNCHER] flg=0x10000000 cmp=com.owentech.simplefragmentswap/.mainActivity }05-18 09:49:23.313: INFO/ActivityManager(71): Start proc com.owentech.simplefragmentswap for activity com.owentech.simplefragmentswap/.mainActivity: pID=451 uID=10036 gIDs={1015}05-18 09:49:23.324: DEBUG/AndroIDRuntime(445): Shutting down VM05-18 09:49:23.333: DEBUG/dalvikvm(445): DeBUGger has detached; object registry had 1 entrIEs05-18 09:49:23.404: INFO/AndroIDRuntime(445): NOTE: attach of thread 'Binder Thread #3' Failed05-18 09:49:24.433: DEBUG/AndroIDRuntime(451): Shutting down VM05-18 09:49:24.433: WARN/dalvikvm(451): threadID=1: thread exiting with uncaught exception (group=0x4001d800)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): FATAL EXCEPTION: main**05-18 09:49:24.473: ERROR/AndroIDRuntime(451): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.owentech.simplefragmentswap/com.owentech.simplefragmentswap.mainActivity}: java.lang.IllegalStateException: The specifIEd child already has a parent. You must call removeVIEw() on the child's parent first.**05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2663)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread.access00(ActivityThread.java:125)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.os.Handler.dispatchMessage(Handler.java:99)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.os.Looper.loop(Looper.java:123)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread.main(ActivityThread.java:4627)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at java.lang.reflect.Method.invokeNative(Native Method)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at java.lang.reflect.Method.invoke(Method.java:521)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:626)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at dalvik.system.NativeStart.main(Native Method)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): Caused by: java.lang.IllegalStateException: The specifIEd child already has a parent. You must call removeVIEw() on the child's parent first.05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.vIEw.VIEwGroup.addVIEwInner(VIEwGroup.java:1970)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:1865)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:1822)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:1802)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:743)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:933)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:916)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1587)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:500)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.Activity.performStart(Activity.java:3781)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2636)05-18 09:49:24.473: ERROR/AndroIDRuntime(451): ... 11 more05-18 09:49:24.494: WARN/ActivityManager(71): Force finishing activity com.owentech.simplefragmentswap/.mainActivity有没有人知道我做错了什么,因为我直接从developer.androID.com获取了代码
谢谢
解决方法:
对不起,找到了答案.当我在fragment1.java中膨胀视图时,它被附加到root.将最后一个标志改为false,现在好了.
总结以上是内存溢出为你收集整理的android – 错误交换/添加XML片段全部内容,希望文章能够帮你解决android – 错误交换/添加XML片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)