我对这种片段理论并不陌生,我似乎不明白我们从何处获得R.id.container
,所以我想在单击按钮后开始片段。这是我的方法
我的主要方法,我没有添加任何代码来启动Fragment类。
callCenter.setOnClickListener(view -> openCallCenter());
//on clicked open call center which should start a fragment
private void openCallCenter() {
}
我的片段类:暂时为空;
public class CallCenterFragment extends Fragment {
public static final String TAG = CallCenterFragment.class.getSimpleName();
public CallCenterFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_call_center, container, false);
}
}
我的片段布局现在为空:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container"
tools:context=".fragment.CallCenterFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
所以:我最大的问题是在我的mainActivity类上,我应该添加什么代码来启动此片段,并且有人可以向我解释,因为我已经看到了几个获取transaction.replace(R.id.container)
的示例
谢谢。
答案 0 :(得分:0)
在要显示片段的活动xml文件中设置ViewPager。为超类FragmentPagerAdapter创建超类的子类PageAdapter。子类中完整的抽象方法。
public class PageAdapter extends FragmentPagerAdapter {
public PageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getI tem(int position) {
Fragment fragment = null;
switch (position){
case 0:{
fragment = new ContactFragment();
break;
}
case 1:{
fragment = new RecentFragment();
break;
}
}
return fragment;
}
@Override
public int getCount() {
// 2 is no of fragments
return 2;
}
}
之后
//--write this code in base activity of fragment
contactview_f = (ViewPager) findViewById(R.id.fragment_layout);
pageAdapter = new PageAdapter(getSupportFragmentManager());
contactview_f.setAdapter(pageAdapter);
答案 1 :(得分:0)
因此,我将在这里为您介绍更多详情
在容器Purpose of Container in Fragments for Android
如果您要按照问题提示在Main活动中显示片段,请尝试以下代码。
在方法上添加代码。
CallCenterFragment fragment = new
CallCenterFragment();
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container, fragment);
trans.commit();
注意。在您的主要xml上,您需要添加容器ID,例如。
<FrameLayout
android:id="@+id/container"
Add width and height />
您将显示片段上给定的文本,它是字符串hello空白片段。