Android 调用访问类的函数

最近开发Android程序遇到了一个问题:主Activity(名为MainActivity)通过系统自动调用了一个继承BaseAdapter类B中的函数(getView)... 最近开发 Android 程序遇到了一个问题:主 Activity(名为 MainActivity)通过系统自动调用了一个继承 BaseAdapter 类 B 中的函数(getView),在 getView 中写了一个 Listener,用于回调 MainActivity 中的一个函数更新 MainActivity 的 UI,请问如何实现?

简单点说,就是 Activity 类 A 的实例调用非 Activity 类 B 的函数,这个函数中如何回调该 A 实例中的函数?直接输入 MainActivity 得到这的是个类本身(Static),无法得到 MainActivity 实例,不能执行更新 UI 操作
问题解决咯~~~~

在任意地方定义:
(其他类中 import 该类.MyCallBack)

public interface MyCallBack {
void execute ();
}

调用者 (Activity 类, AClass.java):

BClass bClass; // 类变量
void createBClass () {
bClass = new BClass (new MyCallBack () {
public void execute() {
// 更新 UI 等等操作
}
});
}

被调用者 (非 Activity 类, BClass.java):

MyCallBack mCallBack; // 类变量
/** 构造函数 */
BClass (MyCallBack callBack) {
mCallBack = callBack;
}

void updateAClass () {
mCallBack.execute ();
// 即可更新 AClass 的 UI
}

该方法通用于 Java
展开
 我来答
一位互联网从业者
2015-07-23 · 知道合伙人软件行家
一位互联网从业者
知道合伙人软件行家
采纳数:170 获赞数:413
辽宁大学 计算机应用技术专业 工学硕士学位

向TA提问 私信TA
展开全部
android调用访问类的函数的方式,和java相同。
如果该类非静态类,则需要声明一个对象,然后初始化对象,对象.函数的方式调用函数。
如果该类是静态类,则直接可以使用 类.函数 的方式,调用函数。
至于什么是静态类,非静态类,只要看类名的前面是否有关键字static
黑白湖面
2011-07-15 · 超过20用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:58.5万
展开全部
一般来说你特意写了一个Adapter,那么它与ListView应该是一一对应的,那么你在初始化Adapter的时候直接将MainActivity作为参数传递到Adapater中,并且将其作为Adapter的一个类成员变量,你现在想怎么调用就怎么调用了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wy5787
2011-07-13 · TA获得超过395个赞
知道小有建树答主
回答量:499
采纳率:0%
帮助的人:343万
展开全部
不太懂,是说在适配器里给某个控件加了监听?结果呢?监听到了没办法根据监听到的内容来适配A的UI?
追问
这个问题我解决了~~在 MainActivity 中传递了一个 Listener 给 B,变相解决了。
但是根本问题没有解决,就是:如何在非 Activity 类中调用 Activity 的实例??
追答
Context呀
这么先进,学习了,不会是没有public类吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lan8795263
2011-07-13 · 超过51用户采纳过TA的回答
知道答主
回答量:164
采纳率:0%
帮助的人:125万
展开全部
我懂你的意思了,你是不是把A类继承ListActivity了。。我之前写过一个点击按钮更换图片的例子,也想在B中的listener里面重写一遍更换图片的方法,但是不可以,你想啊,比如你的Listener是个按钮Click,由于B重写了系统的getView,所以虚拟器跑起来的时候系统就已经布局好了,你并不能改变,这时候你点击按钮想改变A的 UI 那么系统就需要重新布局,这个是不能在一个类得方法里实现的啊,因为重新布局需要走A,B两个类,这是一个整体,所以建议换思路,不要用B继承BaseAdapter了,如果非要这样写,那么记住,避免改变已经布局好了的东西,你可以点击按钮出一些提示之类的功能那都可以实现的,不知道你懂没懂啊。。
更多追问追答
追问
这个问题我解决了~~在 MainActivity 中写 Listener 使用 B 的构造函数传递给 B,变相解决了。
但是根本问题没有解决,就是:如何在非 Activity 类中调用 Activity 的实例??
(因为我还写了一个独立类 C 不继承任何东西,仅仅设计了一些函数用于让 MainActivity 调用,并在特定时候回调 MainActivity 的函数~~C 作为 MainActivity 的子类写在 MainActivity.java 中就可以正常运行,把它搬到 C.java 时就遇到了这个问题)
追答
啊,你真聪明,我受教了,那就都把B和C都写在A的下面,然后定义A的对象调用Activity实例可以不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式