我在片段中创建另一个类的对象时遇到问题。我的代码是
public View onCreateView(LayoutInflater layoutinflater,
ViewGroup viewgroup, Bundle bundle) {
TextView tv = (TextView) getActivity().findViewById(R.id.textView3);
(/*ERROR LINE*/)Database info = new Database(this);
info.open();
String data = info.getData();
info.close();
tv.setText(data);
return layoutinflater.inflate(R.layout.sqlview, viewgroup, false);
}
但它告诉我修改数据库类中的构造函数,该构造函数具有Context作为参数。 请帮忙。
答案 0 :(得分:1)
尝试使用
Database info = new Database(getActivity());
getActivity()
返回与该片段关联的活动,由于Activity
继承自Context
,您可以将其用作构造函数的参数。
答案 1 :(得分:1)
使用Merlevede回答您的问题,但在运行此应用程序后,您必须在 NullPointerException 错误:
tv.setText(data);
因为tv
是null
TextView tv = (TextView) getActivity().findViewById(R.id.textView3);
textView3
在sqlview
上。所以你必须使用以下代码更改你的代码:
public View onCreateView(LayoutInflater layoutinflater,
ViewGroup viewgroup, Bundle bundle) {
View v = layoutinflater.inflate(R.layout.sqlview, viewgroup, false);
TextView tv = (TextView) v.findViewById(R.id.textView3);
Database info = new Database(getActivity());
info.open();
String data = info.getData();
info.close();
tv.setText(data);
return v;
}
答案 2 :(得分:0)
您必须在Database.java中添加构造函数
class Database extends SQLiteOpenHelper{
public Database(Context context) {
super(context, "Your Database Name", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// write you create table query here.
}
// other method to get data...
}
这将解决您的构造函数问题。