当片段从isInLayout方法返回true时?在我的情况下,它返回false但我可以看到片段和isVisible,并且isAdded返回true。
在我的活动onCreate方法中我称之为:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
FragEventList listFrag = new FragEventList();
transaction.replace(R.id.fragment_container_1, listFrag, "list");
transaction.commit();
这是布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/fragment_container_1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
稍后当Loader返回数据时我想将适配器传递给片段谎言:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
Log.i(TAG, "onLoadFinished(Loader<Cursor> loader, Cursor data)");
Log.i(TAG, "fragment="+getSupportFragmentManager().findFragmentByTag("list"));
if (mAdapter != null && data != null) {
mAdapter.swapCursor(data);
FragEventList fragment = (FragEventList) getSupportFragmentManager().findFragmentByTag("list");
if(fragment != null){
Log.i(TAG, "in layout="+fragment.isInLayout());
Log.i(TAG, "is added="+fragment.isAdded());
Log.i(TAG, "is visible="+fragment.isVisible());
}
if(fragment != null && fragment.isInLayout())
{
fragment.setAdapter(mAdapter);
}
} else {
Log.v(TAG, "onLoadFinished: mAdapter is null");
onLoaderReset(null);
}
}
但isInLayout
返回false。
答案 0 :(得分:8)
当片段应该从isInLayout方法返回true时?
当片段是通过XML定义的布局的一部分时,片段将返回true,否则将返回false。 Relevant documentation part.