[英]How to start a fragment from an activity
我正在尝试运行一个类,该类从扩展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 >
如果您的活动扩展了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。
您要替换而不是不加刷新地添加,只需添加即可。 我还简化了您的一个无用变量,只是直接转到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();
}
});
仔细检查您的布局xml,它应该具有一个FrameLayout ,其属性@+id/fragment_place
用作LineDetails片段的占位符。
如果您已经在布局中放置了<fragment />
,则无需以编程方式替换()。
如果活动扩展了AppcompatActivity,则应使用getSupportFragmentManager()
编辑:根据错误! 活动布局中没有名称为fragment_place的视图,@@ id / fragment_place必须存在于activity_main中(如果这是活动所附的布局)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.