我正在尝试启动一个带有2个片段,一行按钮和一个List Fragment的应用程序,但是当我启动它时,应用程序的onCreateView被调用,调用getLayoutInflator来获取一个Layout Inflator。这反过来调用inflate,传递给根布局文件的名称。在此代码中,onCreateView被称为AGAIN,导致无限递归。这是代码
@Override
public View onCreateView(String name, Context context, AttributeSet attrSet) {
Log.i(TAG, "onCreateView, name = " + name + " context " + context + " AttributeSet = " + attrSet);
View v = null; //super.onCreateView(name, context, attrSet);
try {
LayoutInflater inflater = getLayoutInflater();
v = inflater.inflate(R.layout.activity_shop2_drop,null);
Log.i(TAG,"passed to LayoutInflater: " + R.layout.activity_shop2_drop);
}
catch(Exception e) {
Log.e(TAG, "onCreateView failed: " + e.getMessage());
}
return v;
}
答案 0 :(得分:0)
这里的问题是我调用Fragment.onCreateView传入包含视图的id。这个包含视图的是视图本身,所以代码自然会尝试将我的代码附加到它认为包含视图的内容本身。因此无限递归。另一个问题是,当通货膨胀代码在activity_shop2_drop.xml中看到“fragment”标签时返回ClassNotFoundException,因此从不在片段上调用“onCreateView”。我还没有解决这个问题。这是activity_shop2_drop.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/whole_app_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
class="com.victorpreston.shop2drop.S2DButtonFragment"
android:id="@+id/buttonFragmetLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<fragment
class="com.victorpreston.shop2drop.S2DListFragment"
android:id="@+id/listFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
这是thebutton_fragment_layout.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buttonFragmentLayout"
android:layout_width="match_parent"
android:layout_height="40dip"
android:orientation="horizontal">
<Button
android:id="@+id/newItemButton"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="1"
android:text="@string/newColumnButton" />
<Button
android:id="@+id/newColumnButton"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="1"
android:text="@string/newItemButton" />
<Button
android:id="@+id/exitButton"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="1"
android:text="@string/exitButton" />
</LinearLayout>
请注意,它们都创建并使用相同的ID。我尝试改变它并没有区别所以我认为这不是问题。