gpt4 book ai didi

java - 在 OnClickListener 内部我无法访问很多东西 - 如何处理?

转载 作者:IT老高 更新时间:2023-10-28 11:48:44 27 4
gpt4 key购买 nike

在 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 中没有可用的上下文。

我可以在外面做一个静态引用,然后在里面使用它,但这对吗?一直这样做似乎很奇怪?

最佳答案

将代码中的 this 替换为 MyActivity.this,其中 MyActivity 是 Activity 子类的类名。

说明:当您使用这部分代码时,您正在创建一个匿名内部类:
new OnClickListener() {
匿名内部类具有对实例的引用它们是在其中创建的类的。看起来您是在 Activity 子类中创建它,因为 findViewById 是一个 Activity 方法。 Activity 是一个 Context,所以您需要做的就是使用您自动拥有的对它的引用。

关于java - 在 OnClickListener 内部我无法访问很多东西 - 如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2076037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com