如何从不扩展Activity的类中获取视图引用?

时间:2010-07-20 04:50:32

标签: android class android-activity extends

我想要一个类“Utils”,它将在我的代码中使用几种方法。例如,我有一个带有textview和两个ImageButton的顶栏,必须在不同的活动中显示不同的文字和图标。

我发现自己在每个活动上写这样的东西:

(TextView) topBarText = (TextView) findViewById(R.id.topBarText);
topBarText.setText(R.id.mytextForThisView);

我想在我的整个应用程序中找到一次ViewById,然后调用方法setupTopBar(String text, R.id.iconForImageButton1, R.id.iconForImageButton2),或者甚至传递当前Activity的id,让方法找出文本和图像中显示的内容。

我创建了类Util,但它没有扩展Activity。问题是,如果没有,findViewById无法访问,所以我无法使用它。

在Android中执行类似操作的模式是什么?

2 个答案:

答案 0 :(得分:5)

您的帮助方法应该类似于

public static void setTopBarText(Activity act, int textId){
    (TextView) topBarText = (TextView)act.findViewById(R.id.topBarText);
    topBarText.setText(textId);
}

然后你可以从Activity进行静态导入并调用

setTopBarText(this, R.id.mytextForThisView);

答案 1 :(得分:0)

答案对某些情况不利。

这是我的方法:

In your Activity:
YouCustomClassObject.passView((View)findViewById(R.id.aview));

使用参数传递可以解决这类问题。