首页 > 代码库 > java解决 No enclosing instance of type XXX is accessible的问题
java解决 No enclosing instance of type XXX is accessible的问题
有些时候我们要把Activity的一些实现类移到java类里来实现,比如把写以下两个类:
在LifeCircle这个类中:
public class LifeCircle { public class Mybroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } } }
如果在Activity这样去new:
public class Settings extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_layout); LifeCircle lifeCircle = new LifeCircle(this); Mybroadcast cast = new Mybroadcast(); } }
编译器会报一个错误:
- No enclosing instance of type LifeCircle is accessible. Must qualify the allocation with an enclosing instance of type LifeCircle (e.g. x.new A() where x is an instance of LifeCircle).
一种解决方法是把Mybroadcast定义为static class
令一种这样来弄:
package com.example.shoplistdownload; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class LifeCircle { Context mContext; private static LifeCircle sInstance; private Mybroadcast mBroadcast; private Settings mInstance; LifeCircle(Context context) { mContext = context; mInstance = (Settings)context; } public static LifeCircle getIntance(Context context) { if (sInstance == null) { sInstance = new LifeCircle(context); } return sInstance; } public class Mybroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } } public void registerBroadcaster() { mBroadcast = new Mybroadcast(); IntentFilter filter = new IntentFilter(); filter.addAction("com.example.action"); mInstance.registerReceiver(mBroadcast, filter); } }
public class Settings extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_layout); LifeCircle lifeCircle = new LifeCircle(this); lifeCircle.registerBroadcaster(); } }
java解决 No enclosing instance of type XXX is accessible的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。