Java 在片段内打开数据库
在片段java文件中打开数据库时遇到问题。 我用过这个,它和我的问题非常相似,尽管它不起作用Java 在片段内打开数据库,java,android,fragment,Java,Android,Fragment,在片段java文件中打开数据库时遇到问题。 我用过这个,它和我的问题非常相似,尽管它不起作用 public class fragmentBmi extends Fragment { DatabaseHandler db = new DatabaseHandler(getActivity()); //DATABASE public fragmentBmi() { // Required empty public constructor } @O
public class fragmentBmi extends Fragment {
DatabaseHandler db = new DatabaseHandler(getActivity()); //DATABASE
public fragmentBmi() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_bmi, container, false);
TextView bmi = (TextView) v.findViewById(R.id.BMI);
if(db.checkDetails()){ // Check if db is empty, if not print on screen bmi,bmr,rmr. if does print message.
Details d = db.getDetails();
bmi.setText(String.format("BMI: %.2f", d.getBmi()));
}
else{
bmi.setText(R.string.noneInfo);
}
return v;
}
}
错误:
java.lang.NullPointerException:尝试调用虚拟方法
'android.database.sqlite.SQLiteDatabase
android.content.Context.openOrCreateDatabasejava.lang.String,int,
android.database.sqlite.SQLiteDatabase$CursorFactory,
空对象引用上的android.database.DatabaseErrorHandler
我还尝试了上下文变量,也给出了相同的错误。
有没有在片段java文件中打开数据库的解决方案?您不能在实例变量中使用getActivity方法,因为此时尚未创建活动,该方法返回null。要解决此问题,必须移动此行DatabaseHandler db=new DatabaseHandlergetActivity;要激活已创建的方法,请执行以下操作:
不能将getActivity方法用于实例变量,因为此时尚未创建活动,该方法返回null。要解决此问题,必须移动此行DatabaseHandler db=new DatabaseHandlergetActivity;要激活已创建的方法,请执行以下操作:
当您尝试使用db对象时,错误提示为null 尝试改变
DatabaseHandler db = new DatabaseHandler(getActivity()); //DATABASE
为了
在onCreateView中,在视图v=
db = new DatabaseHandler(getContext());
当您尝试使用db对象时,错误提示为null 尝试改变
DatabaseHandler db = new DatabaseHandler(getActivity()); //DATABASE
为了
在onCreateView中,在视图v=
db = new DatabaseHandler(getContext());
DB在变量初始化块中初始化,这意味着它在构造函数之前执行。更多信息:。getActivity在片段生命周期的这一点返回null有关片段生命周期的更多信息,请参见:
您需要在片段本身初始化之后启动db。您的db在变量初始化块中初始化,这意味着它在构造函数之前执行。更多信息:。getActivity在片段生命周期的这一点返回null有关片段生命周期的更多信息,请参见: 您需要在片段本身初始化之后启动db