未调用ListFragment onCreateView

时间:2018-03-07 15:05:55

标签: android android-fragments fragmentmanager

我正在尝试使用FragmentManager替换片段但由于某种原因未调用OnCreateView()

这是我用来创建片段的代码:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
FeedbackListFragment listFragment = new FeedbackListFragment();
fragmentTransaction.replace(R.id.feedback_placeholder, listFragment);
fragmentTransaction.commit();

这是FeedbackListFragment的代码:

public class FeedbackListFragment extends ListFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(TAG,"create feedbacklistview");
        View view = inflater.inflate(R.layout.feedback_popup, container, false);
        return view;
    }
}

这是我的主要布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@color/background_normal"
              android:id="@+id/main_layout">

    <FrameLayout
        android:id="@+id/feedback_placeholder"
        android:layout_width="match_parent"
        android:visibility="gone"
        android:layout_height="match_parent"></FrameLayout>

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="90dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/overview_scan_text"
            android:id="@+id/scantagLabel"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="42sp"
            android:textIsSelectable="false"/>
    <ImageView
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:id="@+id/cleanjack_image"
            android:src="@drawable/logo_clean_jack"
            android:layout_gravity="left|center_vertical"
            android:contentDescription="@string/app_name"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="20dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text=""
            android:id="@+id/messageLabel"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="20sp"
            android:textIsSelectable="false"/>
</LinearLayout>

我已移除android:visibility="gone"以查看是否存在问题,但无效。

1 个答案:

答案 0 :(得分:0)

我尝试了您的示例代码

活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_list);

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    FeedbackListFragment listFragment = new FeedbackListFragment();
    fragmentTransaction.replace(R.id.feedback_placeholder, listFragment);
    fragmentTransaction.commit();
}

FragmentList:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.feedback_popup, container, false);
    return view;
}

XML活动

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#bcbcbc"
    android:id="@+id/main_layout">

    <FrameLayout
        android:id="@+id/feedback_placeholder"
        android:layout_width="match_parent"
        android:visibility="gone"
        android:layout_height="match_parent"></FrameLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="90dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="overview_scan_text"
        android:id="@+id/scantagLabel"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="42sp"
        android:textIsSelectable="false"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:id="@+id/cleanjack_image"
        android:src="@drawable/ic_launcher_background"
        android:layout_gravity="left|center_vertical"
        android:contentDescription="@string/app_name"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="20dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text=""
        android:id="@+id/messageLabel"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="20sp"
        android:textIsSelectable="false"/>
</LinearLayout>

Xml Fragment

    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ListView

        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</android.support.constraint.ConstraintLayout>

您是否已将fragmentList的listView的id设置为

android:id="@android:id/list"

希望这有用:)