我定义了一个数据库DBHelper,创建方法是 DBHelper dbHelper = new DBHelper(context);
在MainActivity了加入四个fragment,现在我想在fragment里加载数据库,content应该填什么?
我填了getActivity().getApplicationContext()、getContent()都不行,都显示 on a null object reference
下面打开数据库SQLiteDatabase dbWrite = dbHelper.getWritableDatabase();都显示失败
MainActivity代码:
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener {
ViewPager viewPager;
BottomNavigationView bottomNavigationView;
HomeFragment homeFragment = new HomeFragment();
CommunityFragment communityFragment = new CommunityFragment();
MallFragment mallFragment = new MallFragment();
MineFragment mineFragment = new MineFragment();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化
}
private void init() {
//获取页面标签对象
viewPager = findViewById(R.id.viewPager);
viewPager.setOnPageChangeListener(this);//添加页面切换监视器
bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setOnNavigationItemSelectedListener(this);//添加导航栏选择监视器
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {//给页面添加适配器
@NonNull
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:return homeFragment;
case 1:return communityFragment;
case 2:return mallFragment;
case 3:return mineFragment;
}
return null;
}
@Override
public int getCount() {//界面个数
return 4;
}
});
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
@Override
public void onPageSelected(int position) {
bottomNavigationView.getMenu().getItem(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) { }
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
viewPager.setCurrentItem(item.getOrder());
return true;
}
}
fragment代码:
public class CommunityFragment extends Fragment {
// RecommentItem是自定义的类
List<RecommendItem> list = new ArrayList<RecommendItem>();//存储全部素材
List<RecommendItem> recommend_list = new ArrayList<RecommendItem>();//存储要显示素材
DBHelper dbHelper = new DBHelper(getContext());
RecommendItem video1,video2,video3,video4,video5,video6,video7,video8,video9,video10,video11,video12;
public CommunityFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_community, container, false);
// Inflate the layout for this fragment
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
init();//创建素材
ListView recommend_viewlist = getActivity().findViewById(R.id.recommend_list);
// 下面省略了给ListView添加显示和响应的代码
}
// 导入素材
public void init() {
SQLiteDatabase dbWrite = dbHelper.getWritableDatabase();// 这一句出错,打不开数据库
dbWrite.execSQL("delete from "+DBHelper.table_WorkTags);
video1 = new RecommendItem(R.drawable.sports1,"20分钟全身燃脂有氧运动","#运动","#燃脂","");
dbWrite.execSQL("insert into "+DBHelper.table_WorkTags+" (cover,title,tag1,tag2,tag3) values("+video1.getItemId()+",'"+video1.getItemTitle()+"','"+video1.getTag1()+"','"+video1.getTag2()+"','"+video1.getTag3()+"')");
video2 = ……// 一直加完所有数据
dbWrite.close();
// 将创建的对象加入素材表中
list.add(video1);list.add(video2);list.add(video3);list.add(video4);list.add(video5);list.add(video6);
list.add(video7);list.add(video8);list.add(video9);list.add(video10);list.add(video11);list.add(video12);
}
// 加入推荐列表
public void initData() {
// 符合要求的数据加入推荐列表
}
}