2017-07-15 28 views
0

我有一個應用程序有很多的活動,幾乎每個我創建一個表像這樣的sqlite的數據填充:Android的傳球activity.this到方法

if (cursor != null) { 
      cursor.moveToFirst(); 
      TextView data; 
      TableRow row; 
      int cnt = 0 ; 

      do { 
       row = new TableRow(myActivity.this); 
       row.setPadding(2,2,2,2); 
       if (cnt++ % 2 == 0) 
        row.setBackgroundColor(Color.WHITE); 
       for (int x = 0; x < cursor.getColumnCount(); x++) { 
        // arReport[i] += cursor.getString(x); 
        data = new TextView(myActivity.this); 
        if (x == 0) { 
         data.setTypeface(Typeface.DEFAULT_BOLD); 
         data.setGravity(Gravity.CENTER_HORIZONTAL); 
        } 
        data.setText(cursor.getString(x)); 
        row.addView(data); 

       } 
       theView.addView(row); 

      } while (cursor.moveToNext()); 
      theView.setShrinkAllColumns(true); 
      theView.setStretchAllColumns(true); 

     } 

,所以我想創建一個單獨的類靜態方法drawTable()將在每個調用的活動中創建此表。不過,我需要傳遞活動名稱作爲該方法的參數,所以我可以做row = new TableRow(myActivity.this)..我試圖用getActivity()替換myActivity.this或者只是這個 - 它沒有工作。請建議我應該怎麼用這樣做...

+0

使用'getApplicationContext()'或'getBaseContext()'。 –

回答

2

您可以創建單獨的類,並通過您的活動的情況下在構造

public class DbHadler { 

Context context; 

public DbHandler(Context context) { 

    this.context= context; 

} 

public void drawTable(Activity activity) { 

    //relevent code 

    Table row; 
    row = new Table(activity); 

} 

然後使用這個類在你的活動這樣

DbHandler db = new DbHandler(getApplicationContext()); 

還是那麼如果片段,

DbHandler db = new DbHandler(getContext()); 

然後它在你的行爲方式像這樣的感覺。

db.drawTable(this); 

,或者如果片段然後,

db.drawTable(getActivity());