相关疑难解决方法(0)

Android:无法将一个片段替换为另一个片段

我需要替换Fragment一个Activity与另一个Fragment,下面是层文件Activity:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/home_layout_container">

    <fragment android:name="com.foo.FragA"
        android:id="@+id/home_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

所以默认情况下有FragA,现在我想在活动中用FragB替换它,我做了:

public void onRegionClicked(Region region) {
    RegionInfoFragment rif = RegionInfoFragment.newInstance(region);
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.home_list, rif);
}
Run Code Online (Sandbox Code Playgroud)

但我得到了例外:

>6:24:40.685: ERROR/AndroidRuntime(9194): Uncaught handler: thread main exiting due to uncaught exception
05-06 16:24:40.692: ERROR/AndroidRuntime(9194): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
05-06 16:24:40.692: ERROR/AndroidRuntime(9194): …
Run Code Online (Sandbox Code Playgroud)

android replace android-fragments

45
推荐指数
2
解决办法
5万
查看次数

FragmentTransaction.replace()不起作用

我有一个ListFragment显示用户创建的项目列表.我有一个ListView它的id设置为"@android:id/list"和一个TextViewid为"@android:id/empty".

我有一个操作栏按钮来显示片段,以允许用户为列表创建更多条目.这是onOptionsItemSelected()方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Fragment frag = null;

    // Right now I only have code for the addCourse() fragment, will add more soon
    switch (item.getItemId()) {
    case R.id.addCourse:
        frag = new AddCourseFragment();
        break;
    default:
        return super.onOptionsItemSelected(item);
    }

    // The support library is being dumb and replace isn't actually 
    getFragmentManager().beginTransaction()
        .remove(this).add(getId(), frag).addToBackStack(null).commit();
    return true;

}
Run Code Online (Sandbox Code Playgroud)

AddCourseFragment代码如下:

public class AddCourseFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

18
推荐指数
1
解决办法
3万
查看次数

第二次在Dialog中填充Fragment时出错

我在Activity中有以下代码,它启动包含片段的布局的对话框.

...
case R.id.pick_resource:
        dialog = new Dialog(this);
        dialog.setContentView(R.layout.resource_picker);
        dialog.setCancelable(true);
        dialog.setTitle("Pick a resource");
        dialog.show();
Run Code Online (Sandbox Code Playgroud)

这在应用程序启动后第一次运行得非常好,但是当对话框退出并稍后再次调用时,我得到了这个堆栈跟踪:

08-10 10:47:33.990: ERROR/AndroidRuntime(26521): FATAL EXCEPTION: main
        android.view.InflateException: Binary XML file line #7: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:224)
        at android.app.Dialog.setContentView(Dialog.java:449)
        at org.rhq.pocket.StartActivity.onOptionsItemSelected(StartActivity.java:118)
        at android.app.Activity.onMenuItemSelected(Activity.java:2390)
        at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:852)
        at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:956)
        at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:174)
        at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:85)
        at android.view.View.performClick(View.java:3100)
        at android.view.View$PerformClick.run(View.java:11644)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:126)
        at android.app.ActivityThread.main(ActivityThread.java:3997)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:491)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) …
Run Code Online (Sandbox Code Playgroud)

android dialog fragment

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×3

android-fragments ×2

dialog ×1

fragment ×1

replace ×1