在Switch Statement中更改片段

时间:2015-12-29 19:30:06

标签: java android android-fragments android-studio

我有FragmentAcivity我用来创建动态用户界面。我希望能够根据FragmentActivity收到的意图,替换只有文本片段的片段,片段可能必须在线发布内容,比如Twitter或服务器。

我使用了一个开关(如下所示),Android Studio告诉我它无法解析我的事务对象上的第二个add()(我在其中添加postFrag)方法。我错过了什么?如果使用开关是一个坏主意,怎么办呢?

'fragView`是片段容器。

private void showContentInContainer() {

    // Get intent to determine next action
    int workType = getIntent().getExtras().getInt(MainActivity.TAG_FRAGWORK);

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();

    // Add the appropriate frag
    switch (workType) {
        case MainActivity.VIEW_RIGHTS :
            // TODO: Pass a rights fragment
            RightsFragment rightsFrag = new RightsFragment();
            transaction.add(R.id.fragView, rightsFrag);
            break;
        case MainActivity.VIEW_SRA :
            // TODO: Pass a view SRA fragment
            PostFragment postFrag = new PostFragment();
            transaction.add(R.id.fragView, postFrag);
            break;
        default: break;
    }
    transaction.commit(); // publish changes
}

编辑:添加了片段容器视图的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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
    <fragment
        android:id="@+id/fragView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</ScrollView>

<fragment
    android:id="@+id/adFragment_2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:name="com.frankbrenyahapps.citisafe.adFragment"
    tools:layout="@layout/fragment_ad"  />
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

我的猜测是postFrag实际上并不是Fragment的子类,或者你将android.support.v4.app.Fragment与android.app.Fragment混合在一起。 它与switch语句无关。