我正在尝试嵌套片段,因为我的xml布局开始难以维护。
从片段中,当我点击跳过按钮时,我开始片段。我尝试了正常的开始和子片段。在这两种情况下,我都在inflate方法中进入片段,但我的屏幕保持空白。当然,当我将片段称为第一级时,布局会正确膨胀。
调用第一个片段中的第二个片段:
skip.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
SelectServiceFragment ssf = new SelectServiceFragment();
ft.add(ssf,"SelectService");
ft.commit();
}
});
SelectServiceFragment:
public class SelectServiceFragment extends Fragment {
Context context;
public SelectServiceFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootview = null;
rootview = inflater.inflate(R.layout.select_svce_fragment, container, false);
return rootview;
}
和我的xml布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Select service!!!!"
android:textColor="#000000"
/>
</RelativeLayout>
我是否遗漏了嵌套片段中的某些内容?
答案 0 :(得分:0)
试试这个:
skip.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment ssf = new SelectServiceFragment();
ft.replace(R.id.container, ssf);
ft.commit();
}
});
答案 1 :(得分:0)
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SelectServiceFragment ssf= new SelectServiceFragment();
fragmentTransaction.add(R.id.fragment_container, ssf, "SelectService");
fragmentTransaction.commit();
试试这种方式
答案 2 :(得分:-1)
是的,你错过了最重要的事情。您可以从基类方法更改片段。您首先替换方法的类。将该方法作为公共方法,并使用片段类名称传递它的参数。假设你在基类中有第一个替换或启动片段的方法
public void replaceFragment( Fragment fragment) {
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_home, fragment);
fragmentTransaction.commit();
// if you have used drawer_layout
// othere wise no need of below lines
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
然后在任何片段中调用此方法并传递片段类名称,如此((BaseClassName) getActivity()).replaceFragment(new ReportLostItem());
,这样您就可以从任何片段类替换片段。如果它能解决你的问题,请接受答案
答案 3 :(得分:-1)
我找借口让你失去时间! 一切都按预期工作! 当我从RelativeLayout跳转时,我唯一做的就是在framelayout所在的RL上设置可见性(不可见)。 遗憾!