一种解决方法很简单,可以将主类字段设为public
但是,这会弄乱您的代码,您应该尽可能将字段保密。
除了更好地完成 IDE 代码之外,它还可以保护类免受外部非法操纵。
现在对我来说诀窍是内部类。
内部类可以访问其父级的私有字段,但是 Java 也不允许将内部类放入另一个文件中。
它必须在父类内部定义。
这是我开始挖掘并找到可能被认为可以接受的解决方案的地方。
如果这伤害了 Java 专家,我会很感激不要被否决;)
诀窍是在自己的 java 文件中创建一个“抽象类”。
我将它命名为有点超出惯例以使其脱颖而出:InnerMainActivity_onClickHandlers.java
MainActivity 是我的主类(新内部类的父类)
在我的 Parentclass 中,我定义了这个字段,一个普通的内部类,但 扩展 新类:
private class inner extends InnerMainActivity_onClickHandlers{
public inner(MainActivity mainActivity)
{
super(mainActivity);
}
};
在我的 MainActivity.onCreate 中:
Button.setOnClickListener(new inner(this));
如您所见,它会将 MainActivity(Parent)传递给 Inner 类。
现在是 Inner 类本身:
public abstract class InnerMainActivity_onClickHandlers implements View.OnClickListener
{
private final MainActivity main;
public InnerMainActivity_onClickHandlers(MainActivity mainActivity)
{
this.main = mainActivity;
}
@Override
public void onClick(View view)
{
// here implement the listener
}
}
要使这项工作如宣传的那样,您需要将 MainActivity/Parent 的 private 属性更改为 protected。
现在扩展的内部类具有对父字段的访问权限,但是任何外部类仍然不能访问它。
在这种情况下,我有一个专门用于所有 onclick 侦听器的类,第二个类可以用于其他事情。