我试图将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/