我正在尝试使用Android兼容包来创建一个使用Fragments的向后兼容应用。但是,当我在Android v2.2模拟器上运行它时崩溃了。它不会在我的Xoom(v3.2)上崩溃。我怀疑main.xml中的fragment标签可能是原因:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<fragment android:name="com.companyname.appname.MainMenuFragment"
android:id="@+id/mainMenu"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="fill_parent" />
</LinearLayout>
这是FragmentActivity:
package com.companyname.appname;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class AppName extends FragmentActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
这是碎片:
package com.companyname.appname;
import android.support.v4.app.Fragment;
public class MainMenuFragment extends Fragment {
}
有什么想法吗?
由于
编辑:我已针对API级别8(Android v2.2)
答案 0 :(得分:2)
谢谢,smith324和LeffelMania。错误logcat显示此错误:08-03 22:03:22.946:ERROR / AndroidRuntime(938):引起:java.lang.IllegalStateException:片段com.companyname.appname.MainMenuFragment未创建视图。所以我在我的MainMenuFragment类中覆盖了onCreateView()并让它返回一个View,这就有效了。奇怪的是它没有在v3.2中崩溃。
答案 1 :(得分:1)
有时您不希望将UI附加到Fragment。例如,在我的应用程序中,我有一个片段负责在操作栏中用作操作视图的菜单项。在这种情况下,您无法实施onCreateView()
。
如“添加没有UI的片段”部分中的Android Fragment user guide所述,您必须以编程方式将片段添加到他的活动中。
以下是我在活动中使用的代码:
// Add the address bar fragment
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(addressBarFragment,"address_bar_fragment");
fragmentTransaction.commit();
注1:我使用getSupportFragmentManager()
代替getFragmentManager()
,因为我使用兼容性库。
注2:在我的例子中没有调用新的Fragment(),因为我使用Roboguice进行依赖注入。