Android 安卓全息图库

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

是我第一次使用Fragment,我进入了这个库,我想显示一组从数据库中获取的数据,但是我得到了错误

@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);