自己创建应用场景,编程实现多个fragment,并在activity中正确插入fragment,实现多个fragment的分屏。
时间: 2024-03-22 13:37:10 浏览: 97
Activity+多个Fragment开发
好的,我来为你演示一个创建应用场景的例子。
假设我们正在开发一个新闻客户端,我们需要在主界面中实现多个Fragment的分屏,分别展示不同的新闻分类。
首先,我们需要在布局文件中定义一个ViewPager,设置其高度为match_parent,宽度为wrap_content。然后,我们创建多个Fragment,每个Fragment用于展示不同分类的新闻。
下面是一个示例的布局文件:
```xml
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
接下来,我们创建多个Fragment,每个Fragment用于展示不同分类的新闻。下面是一个示例的Fragment代码:
```java
public class NewsFragment extends Fragment {
private static final String ARG_CATEGORY = "category";
private String mCategory;
public static NewsFragment newInstance(String category) {
NewsFragment fragment = new NewsFragment();
Bundle args = new Bundle();
args.putString(ARG_CATEGORY, category);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mCategory = getArguments().getString(ARG_CATEGORY);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_news, container, false);
// TODO: 在这里添加展示新闻的逻辑代码
return view;
}
}
```
在这个示例中,我们使用newInstance()方法创建一个NewsFragment实例,并通过Bundle传递新闻分类的信息。在onCreate()方法中,我们从Bundle中获取新闻分类的信息。在onCreateView()方法中,我们使用LayoutInflater加载布局文件,并在其中添加展示新闻的逻辑代码。
最后,我们需要创建一个PagerAdapter类,用于管理ViewPager中的Fragment。下面是一个示例的PagerAdapter代码:
```java
public class NewsPagerAdapter extends FragmentPagerAdapter {
private static final int NUM_PAGES = 3;
public NewsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return NewsFragment.newInstance("头条");
case 1:
return NewsFragment.newInstance("娱乐");
case 2:
return NewsFragment.newInstance("体育");
default:
return null;
}
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "头条";
case 1:
return "娱乐";
case 2:
return "体育";
default:
return null;
}
}
}
```
在这个示例中,我们创建了一个NewsPagerAdapter类,用于管理ViewPager中的Fragment。在getItem()方法中,我们根据位置返回不同的NewsFragment实例。在getCount()方法中,我们返回Fragment的数量。在getPageTitle()方法中,我们返回每个Fragment的标题。
最后,在MainActivity中,我们将PagerAdapter设置给ViewPager即可:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = findViewById(R.id.view_pager);
NewsPagerAdapter pagerAdapter = new NewsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter);
}
}
```
这样,我们就实现了多个Fragment的分屏,每个Fragment展示不同分类的新闻。
阅读全文