Android 如何将片段添加到列表中
我创建了以下包: 主页->HomeActivity.class,HomeFragment.class,SectionsPageAdapter.class 朋友->Friends.class 消息->Messages.class SectionsPageAdapter扩展FragmentPagerAdapter以管理片段, 节SPAGEAdapter中编写的代码是:Android 如何将片段添加到列表中,android,android-fragments,fragment,fragmentpageradapter,Android,Android Fragments,Fragment,Fragmentpageradapter,我创建了以下包: 主页->HomeActivity.class,HomeFragment.class,SectionsPageAdapter.class 朋友->Friends.class 消息->Messages.class SectionsPageAdapter扩展FragmentPagerAdapter以管理片段, 节SPAGEAdapter中编写的代码是: package com.example.sk.voiceapplication.HomePage; import andro
package com.example.sk.voiceapplication.HomePage;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class SectionsPageAdapter extends FragmentPagerAdapter {
private final List<Fragment> fragment_hierarchy = new ArrayList<>();
public SectionsPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragment_hierarchy.get(position);
}
@Override
public int getCount() {
return fragment_hierarchy.size();
}
public void addFragment(Fragment fragment){
fragment_hierarchy.add(fragment);
}
}
现在,类朋友和消息与HomeFragment相同,但需要做一些小改动
在课堂家庭活动中我写了:
package com.example.sk.voiceapplication.HomePage;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.example.sk.voiceapplication.Friends.Friends;
import com.example.sk.voiceapplication.Messages.Messages;
import com.example.sk.voiceapplication.Profile.MyProfile;
import com.example.sk.voiceapplication.R;
public class HomeActivity extends AppCompatActivity {
private static final String TAG = "HomeActivity";
private SectionsPageAdapter sectionsPagerAdapter;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setupFragments();
}
private void setupFragments() {
sectionsPagerAdapter = new SectionsPageAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(viewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0);
tabLayout.getTabAt(1);
tabLayout.getTabAt(2);
}
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new HomeFragment());
adapter.addFragment(new Messages());
adapter.addFragment(new Friends());
viewPager.setAdapter(adapter);
}
}
在HomeActivity中创建片段对象并将其添加到带有行的SectionsPageAdapter时
addFragment(新的HomeFragment())
它显示错误:
无法将SpageAdapter部分中的addFragment(android.support.v4.app.Fragment)应用于(com.example.sk.voiceapplication.homepragment)
类似于
addFragment(新消息())
无法将SpageAdapter部分中的addFragment(android.support.v4.app.Fragment)应用于(com.example.sk.voiceapplication.Messages.Messages)
addFragment(newFriends())
SpageAdapter部分中的addFragment(android.support.v4.app.Fragment)不能应用于(com.example.sk.voiceapplication.Friends.Friends)
我做错了什么?
解决方案是什么?您缺少导入
导入android.support.v4.app.Fragment代码>。您必须使用V4 Fragment而不是android.app.Fragment
替换-:
导入android.app.Fragment代码>
致-:
导入android.support.v4.app.Fragment代码>在所有片段中。将其更改为-:
public class HomeFragment extends Fragment
{
}
致-:
在你的三个片段中
public class HomeFragment extends Fragment
{
}
public class HomeFragment extends android.support.v4.app.Fragment
{
}