在 OnClickListener 内部,我无法访问作用域“外部”的大多数变量,如下所示:
findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent mainApps = new Intent(Intent.ACTION_MAIN);
mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
/*
Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
startActivity(intent);*/
}
});
在此示例中,我需要获取 PacketManager,但无法获取它,因为我在 OnClickListener 中没有可用的上下文。
我可以在外部创建静态引用,然后在内部使用它,但这是正确的吗?必须一直这样做似乎很奇怪?
Replace this
在你的代码中MyActivity.this
其中 MyActivity 是 Activity 子类的类名。
说明:当您使用这部分代码时,您正在创建一个匿名内部类:
new OnClickListener() {
匿名内部类具有对创建它们的类的实例的引用。看起来您是在 Activity 子类中创建它,因为 findViewById 是一个 Activity 方法。活动是一个上下文,因此您所需要做的就是使用您自动拥有的对它的引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)