其它类(非MainActivity的内部类)怎么去调用MainActivity中定义的方法(非静态方法)?

xqhrs232 2011-01-24 02:49:59
其它类(非MainActivity的内部类)怎么去调用MainActivity中定义的方法(非静态方法)?


这个其它类不是从Activity继承而来,所以想通过MainActivity类(继承自Activity类,所以有一些方法可以直接使用,因为它遵守ANDROID下的一些框架)的方法来做一些事情。像发广播消息什么的。


MainActivity类在开始就被ONCREATE( )了,所以应该已经实例化了,但在其它类中怎么引用?怎么去getInstance把MainActivity的实例得到???!!!


在其它类直接MainActivity.this.xxx( )这样引用不行,报下面的错误:

No enclosing instance of the type MainActivity is accessible in scope.


其它类直接写成MainActivity的内部类就没这样的问题,想不明白!!!

...全文
9391 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
goto8848 2012-07-27
  • 打赏
  • 举报
回复
可以哦,学习了
xqhrs232 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tqwboy 的回复:]
传对象:

Java code

public class MainActivity extends Activity
{
……
public void anotherClass()
{
AnotherClass activity = new AnotherClass(this);
}
}

public class AnotherCl……
[/Quote]
非常感谢!!!
tqwboy 2011-01-25
  • 打赏
  • 举报
回复
传对象:

public class MainActivity extends Activity
{
……
public void anotherClass()
{
AnotherClass activity = new AnotherClass(this);
}
}

public class AnotherClass
{
private MainActivity activity;
public AnotherClass(MainActivity activity)
{
this.activity = activity;
}
}


传接口:

public interface IActivity
{
// 与Activity里同名同参数的方法声明
}

public class MainActivity extends Activity implements IActivity
{
……
public void anotherClass()
{
AnotherClass activity = new AnotherClass(this);
}
}

public class AnotherClass
{
private IActivity iActivity;
public AnotherClass(IActivity iActivity)
{
this.iActivity = iActivity;
}
}
Sephoenix 2011-01-25
  • 打赏
  • 举报
回复
可以回答你最后一个问题:
--------------
在其它类直接MainActivity.this.xxx( )这样引用不行,报下面的错误:
No enclosing instance of the type MainActivity is accessible in scope.
其它类直接写成MainActivity的内部类就没这样的问题,想不明白!!!
--------------

一个普通内部类(非static的)拥有它的外围类的所有成员的访问权限,也可以引用外围类的对象:外围类的名称.this
xqhrs232 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mailbomb 的回复:]
传递一个MainActivity的对象给这个类
[/Quote]

怎么传?
网络咖啡 2011-01-24
  • 打赏
  • 举报
回复
传递一个MainActivity的对象给这个类
tqwboy 2011-01-24
  • 打赏
  • 举报
回复
除了楼上两位说的方法,还可以使用接口的方式来实现
xqhrs232 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 freshui 的回复:]
只能是MainActivity的内部类了。
[/Quote]

觉得还有一种方法就是通过消息机制来完成。其它类发一个消息给 MainActivity ,让它去处理!!!
freshui 2011-01-24
  • 打赏
  • 举报
回复
只能是MainActivity的内部类了。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧