我试图将Android Activity声明为内部类。此Activity仅应由包含的类生成,并且需要访问其某些私有方法(我真的不想公开的方法。)。当尝试生成它时,我得到了:

java.lang.InstantiationException: can't instantiate class com.foo.bar.baz$MyActivity; no empty constructor


该活动已在我的清单中正确声明。这在Android中是不可能的吗?

编辑:一些代码

...
public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        // Do stuff that uses the parent class's functions
        ...
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (!forwardResultToParent(requestCode, resultCode, data)) {
            super.onActivityResult(requestCode, resultCode, data);
        } else {
            finish();
        }
    }
}

最佳答案

内部类的实例具有对包含类的包含实例的引用。您只能从包含类的方法(或构造函数)创建内部类的实例。

可能可以将内部类设为静态。仅当您提供显式引用时,它才能访问父类字段,但我认为您可以接受。

您还应该考虑创建一个特殊的程序包并使用程序包可见性。

关于android - Android Activity 作为内部类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20213308/

10-13 05:07