如何从不使用外部类名的内部类中获取外部类的引用?

Pri*_*off 5 java android

以下是示例代码:

Class SomeClass extends Activity {
    public void someMethod() {
        Runnable r = new Runnable() {
            public void run() {
                Intent service = new Intent(SomeClass.this, SomeOtherClass.class);
                // ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将代码更改为不使用SomeClass(in new Intent(SomeClass.this, ...))?我想将此示例放在多个类中,我不希望每次都使用不同的类名.

Mxy*_*xyk 3

更短的方法(建议):

将您的 Intent替换SomeClass.thisgetApplicationContext()应该可以解决问题。

我使用的方法(有点冗长,可能不是两者中最好的):

在每个类中,制作一个private Context mContext;
然后,在onCreate()每个类的 中,制作mContext = this;
最后,将SomeClass.this您的意图替换为mContext

  • 这个答案很好,并提供了很好的解决方案,但我想提一下,使用 mContext 保存对上下文的引用应该小心谨慎。很容易导致记忆韭菜。 (2认同)