2014-09-01 114 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()); 
相關問題