gpt4 book ai didi

java - android 将 Activity.this 传递给方法

转载 作者:行者123 更新时间:2023-12-02 02:42:58 25 4
gpt4 key购买 nike

我有一个包含很多 Activity 的应用程序,几乎在每个 Activity 上我都创建一个填充 sqlite 数据的表,如下所示:

  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()的单独的类,它将在每个调用的 Activity 中创建这个表。但是,我需要将 Activity 名称作为参数传递给该方法,以便我可以执行 row = new TableRow(myActivity.this) .. 我试图用 getActivity() 或仅此替换 myActivity.this - 它不起作用。请建议我应该用什么来做到这一点......

最佳答案

您可以创建单独的类并在构造函数中传递 Activity 的上下文

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

}

然后在您的 Activity 中使用此类,如下所示

DbHandler db = new DbHandler(getApplicationContext());

或者如果 fragment 那么,

DbHandler db = new DbHandler(getContext());

然后它的方法在你的 Activity 中像这样。

db.drawTable(this);

或者如果 fragment 那么,

db.drawTable(getActivity());

关于java - android 将 Activity.this 传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45114407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com