我有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>
答案 0 :(得分:1)
我的猜测是postFrag实际上并不是Fragment的子类,或者你将android.support.v4.app.Fragment与android.app.Fragment混合在一起。 它与switch语句无关。