2014-09-01 105 views
0

我想在Android中为每个Swipe View执行不同的SQL语句。这里是我的onCreateView部分:Android构造函数没有定义

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    expensesCat = inflater.inflate(R.layout.dashboard_expensescat_frag, 
      container, false); 

    DatabaseAdapter mDbHelper = new DatabaseAdapter(this); 
    mDbHelper.createDatabase(); 
    mDbHelper.open(); 
    TransactionRecController trc = new TransactionRecController(
      mDbHelper.open()); 

    trans_list = trc.getChartExpensesCat(); 
    openChart(); 
    mDbHelper.close(); 
    return expensesCat; 
} 

在我的控制器类:

private SQLiteDatabase mDb; 
public TransactionRecController(SQLiteDatabase mDb) { 
    this.mDb = mDb; 
} 

public ArrayList<TransactionRecModel> getChartExpensesCat() { 
    try { 
     String sql = "SELECT SUM(tr.amount) AS total, c.categoryName FROM transactionRec tr " + 
       "INNER JOIN category c ON tr.categoryID = c.categoryID " + 
       "WHERE tr.type = 'W' GROUP BY c.categoryName"; 
     Cursor mCur = mDb.rawQuery(sql, null); 
     Log.e(TAG, "Data Grab Success"); 
     if (mCur.getCount() != 0) { 
      if (mCur.moveToFirst()) { 
       do { 
        TransactionRecModel trm = new TransactionRecModel(); 

        trm.setCategory(mCur.getString(mCur 
          .getColumnIndex("categoryName"))); 
        trm.setAmount(mCur.getInt(mCur.getColumnIndex("total"))); 

        transList.add(trm); 
       } while (mCur.moveToNext()); 
      } 
     } 
     return transList; 
    } catch (SQLException mSQLException) { 
     throw mSQLException; 
    } 
} 

然而,当我尝试初始化DatabaseAdapter,我收到此错误信息:

The constructor DatabaseAdapter(DashboardExpensesCat) is undefined 

我不知道如何解决这个错误,因为我无法更改我的控制器类中的构造函数。

在此先感谢。

+0

是什么DashboardExpensesCat? – Dhananjay 2014-09-01 04:56:46

+0

这是我的onCreateView()的类名称 – 2014-09-01 04:58:17

+0

@Crazy:我的猜测是他的'活动'。 由于我们无法访问构造函数方法本身,所以它不是很容易。不过,我认为你应该传递一些'Context'。 – eightx2 2014-09-01 04:58:30

回答

3

的问题是,你是通过你的片段的对象

DatabaseAdapter mDbHelper = new DatabaseAdapter(this); 

这里this意味着片段的实例或对象。而在这一点,你必须通过一个活动的Context,当你在片段初始化它,那么你需要传递

DatabaseAdapter mDbHelper = new DatabaseAdapter(getActivity()); 
相关问题