我有一个ListActivity,当我按下一个按钮时,我开始显示另一个ListActivity。现在,我必须将这些ListActivities更改为ListFragments。我这样做是为了夸大布局:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/**Inflate the layout for this fragment*/
return inflater.inflate(R.layout.recent_calls, container, false);
}
为了开始这个意图,现在,作为一个片段,我这样做:
CallDetailActivity Fragment_detail = new CallDetailActivity();
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.recent_calls, Fragment_detail);
transaction.addToBackStack(null);
transaction.commit();
我的问题是,我将R.id.recent_calls
置于替换中,我正在调用我使用onCreateView初始化的相同布局的FrameLayout id。这个可以吗?或者在使用片段时,还有另一种方法可以用另一种方法替换实际布局?类似于活动的意图。
UPDATE -
我在.replace
上遇到错误,因为它显示我“类型fragmenttransaction中的方法replace(int,fragment)不适用于参数(int,CallDeateilActivity)“
更新2 -
<FrameLayout
android:id="@+id/recent_calls"
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"
android:scrollbarStyle="outsideOverlay"/>
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Call log is empty"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"/>
答案 0 :(得分:1)
好像你已经从支持库中混合了碎片,而从原生android中混合了碎片。
你必须选择什么分钟。你想要支持的sdk版本,然后决定使用什么片段。
我的问题是,在我将R.id.recent_calls置于替换中的地方,我正在调用我用onCreateView初始化的相同布局的FrameLayout id。这可以吗?
我更喜欢使用更多的OOP - 您可以创建一个处理翻译等的控制器,从片段发送回调切换片段。