Java-Android-将活动/类分为多个文件,以提高组织性(解决方案)
问题内容:
我不是JAVA的专业人士,但是我发现自己因Android活动变得过大而发疯。
经过几页代码长度后,我发现自己一直来回滚动!
不仅OnClickhandlers可以发展壮大,而且很多代码往往会总结为更大的活动。
碎片对我来说不是解决方案。
通常,Java不允许将一个类拆分为多个文件,因此需要进行修改。
关于这一点,我浏览了很多stackoverflow线程,没有一个解决方案。
无论如何我都解决了,也许这对其他人有帮助。
这是Android的一个重点,因为我为所有菜单和按钮所占用的庞大的onClick
Handler感到烦恼,但我想它也可以以其他方式适用于其他一般Java问题。
问题答案:
一种解决方案很简单,您可以使主类字段成为可能,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(父类)传递给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
}
}
为了使此功能如广告所示,您需要将private
MainActivity / Parent 的属性更改为protected
。
现在,扩展的内部类具有对父字段的访问权限,但是任何外部类仍无法访问它。
在这种情况下,我为所有onclick侦听器提供了一个专用的类,可以将第二个类用于其他用途。