Android 安卓全息图库
是我第一次使用Fragment,我进入了这个库,我想显示一组从数据库中获取的数据,但是我得到了错误Android 安卓全息图库,android,sqlite,Android,Sqlite,是我第一次使用Fragment,我进入了这个库,我想显示一组从数据库中获取的数据,但是我得到了错误 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.graph, container, false); mHelper = new
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.graph, container, false);
mHelper = new DbHelper(getActivity());
show();
return v;
}
private void show(){
String author;
int color;
Float cost;
SQLiteDatabase db = new DbHelper(getActivity()).getReadableDatabase();
String sql ="SELECT author, color, SUM(cost) FROM Table WHERE cost>0 GROUP BY author";
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
author = c.getString(0);
color = c.getInt(1);
cost = c.getFloat(2);
PieGraph pg = (PieGraph)getActivity().findViewById(R.id.piegraph);
PieSlice slice = new PieSlice();
slice.setColor(color);
slice.setValue(cost);
pg.addSlice(slice);
}
c.close();
db.close();
pg.setOnSliceClickedListener(new OnSliceClickedListener(){
...
日志
在第54行:pg.addSlice(slice)代码>
可能:pg
为null
:
PieGraph pg = (PieGraph)getActivity().findViewById(R.id.piegraph);
getActivity()
和stacktrace表明您处于片段中,但您试图访问活动视图层次结构中的视图。视图应该在您当前所在的onCreateView()
中创建的片段中-片段视图尚未附加到活动
解决方法之一:从onCreateView
传递视图引用
更明显的问题是:在读取光标的循环中关闭了光标和数据库。使用achartengine库,这是最好的图形java库while循环的结尾在哪里?在片段中,在哪里调用show()方法?
PieGraph pg = (PieGraph)getActivity().findViewById(R.id.piegraph);