我正在尝试从扩展AppCompactActivity的类中运行一个扩展片段的类,我已尝试过在Stackover流程中看到的所有内容,但我无法解决问题。 LineDetails正在扩展片段
Progress1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fr = new LineDetails();
android.app.FragmentManager fm = getFragmentManager();
android.app.FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();
}
});
XML
<fragment android:name="com.almac.tracker.LineDetails"
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="match_parent" />
活动类XML的一部分
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none"
tools:context=".Dashboard">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment_place">
</FrameLayout>
</RelativeLayout >
答案 0 :(得分:2)
如果您的活动延长AppCompatActivity
,则您无法使用getFragmentManager()
。
事实上,您应该删除android.app
包中的类,例如android.app.FragmentManager
。您应该使用包android.support.v4.app
中的支持类,例如android.support.v4.app.FragmentManager
使用getSupportFragmentManager()
代替getFragmentManager()
堆栈跟踪报告您的活动中没有任何ID为R.id.fragment_place
的布局。检查活动的xml并更正片段持有者的ID。
答案 1 :(得分:0)
您正在替换而不是在没有刷新的情况下添加,只需添加即可。我还简化了您的一个无用变量,直接转到ft
而不是中间fm
。
Progress1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fr = new LineDetails();
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragment_place, fr);
ft.commit();
}
});
答案 2 :(得分:0)
仔细检查您的布局xml,它应该有一个 FrameLayout ,其属性为@+id/fragment_place
,可用作 LineDetails 片段的占位符。
如果您已在布局中放置<fragment />
,则无需以编程方式替换()。
答案 3 :(得分:0)
getSupportFragmentManager()
编辑: 根据错误!活动的布局中没有名为 fragment_place 的视图,@ + id / fragment_place必须存在于activity_main中(如果这是附加到活动的布局)