从片段开始片段

时间:2013-11-07 11:10:21

标签: android android-intent android-fragments

我有一个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"/>

1 个答案:

答案 0 :(得分:1)

好像你已经从支持库中混合了碎片,而从原生android中混合了碎片。

你必须选择什么分钟。你想要支持的sdk版本,然后决定使用什么片段。

  

我的问题是,在我将R.id.recent_calls置于替换中的地方,我正在调用我用onCreateView初始化的相同布局的FrameLayout id。这可以吗?

我更喜欢使用更多的OOP - 您可以创建一个处理翻译等的控制器,从片段发送回调切换片段。

也请检查此问题:Fragment add or replace not working