我正在尝试将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();
}
}
}
答案 0 :(得分:1)
内部类的实例具有对包含类的包含实例的引用。您只能从包含类的方法(或构造函数)创建内部类的实例。
可能你可以使内部类静态。只有在您提供明确的引用时,它才能访问父类字段,但我认为您可以使用它。
您还应考虑创建一个特殊包并使用包可见性。