Java-Android-将活动/类拆分为多个文件以实现更好的组织(解决方案)
我对JAVA不在行,但我发现自己对Android活动变得太大而发疯。Java-Android-将活动/类拆分为多个文件以实现更好的组织(解决方案),java,android,external,onclicklistener,inner-classes,Java,Android,External,Onclicklistener,Inner Classes,我对JAVA不在行,但我发现自己对Android活动变得太大而发疯。 经过几页的代码长度,我发现自己的永久滚动来回 不仅onClickHandler会变得庞大,而且很多代码往往会在更大的活动中汇总。 碎片对我来说不是解决办法。 一般来说,Java不允许将一个类拆分为多个文件,因此需要进行黑客攻击 关于这一点,我浏览了很多stackoverflow线程,没有一个有解决方案。 反正我解决了,也许这对其他人有帮助 这是一个有点Android化的解决方案,因为我对所有菜单和按钮都使用了巨大的onClic
经过几页的代码长度,我发现自己的永久滚动来回
不仅onClickHandler会变得庞大,而且很多代码往往会在更大的活动中汇总。
碎片对我来说不是解决办法。
一般来说,Java不允许将一个类拆分为多个文件,因此需要进行黑客攻击 关于这一点,我浏览了很多stackoverflow线程,没有一个有解决方案。
反正我解决了,也许这对其他人有帮助
这是一个有点Android化的解决方案,因为我对所有菜单和按钮都使用了巨大的onClick处理程序,但我想它同样适用于其他一般Java问题。一个解决方案很简单,您可以将主类字段
公开
然而,这将打乱你的代码,你应该保持私人领域时,可能的。
除了更好地完成IDE的代码外,它还可以保护类免受非法的外部操作
现在我的窍门是内部类。
内部类可以访问其父类的私有字段,但是Java也不允许将内部类放入另一个文件中。
它必须在父类内部定义。
这就是我开始挖掘的地方,并找到了一个可能被认为是可以接受的解决方案。
如果这伤害了java专家,我希望不要被否决;)
诀窍是在自己的java文件中创建一个“抽象类”。
为了让它脱颖而出,我将它命名为有点超出常规:InnerMainActivity\u onClickHandlers.java
MainActivity是我的主类(新内部类的父类)
在我的父类中,我定义了这个字段,一个普通的内部类,但扩展了新类:
private class inner extends InnerMainActivity_onClickHandlers{
public inner(MainActivity mainActivity)
{
super(mainActivity);
}
};
在my MainActivity.onCreate中:
Button.setOnClickListener(new inner(this));
正如您所看到的,正如您所看到的,它将MainActivity(父级)传递给内部类
现在,内部类自身:
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/父项的私有属性更改为受保护的
现在,扩展的内部类拥有对父字段的访问权限,但是任何外部类仍然不能访问它
在本例中,我为所有onclick侦听器提供了一个专用类,第二个类可用于其他用途。我遵循的一个简单方法是将视图关注点移动到一个单独的类中(我们称之为ViewManager),并使活动/片段仅作为控制器工作
视图管理器通常负责-
- 扩大布局
- 获取对所有视图的引用
- 在视图中显示数据
- 处理点击/触摸事件
- 动画
该活动/片段仅负责-
- 获取数据并将其传递给ViewManager以显示数据
- 操纵导航
- 将数据发布到服务器/DB
对于触发控制器负责的操作的UI控件,例如在单击按钮时启动新活动,ViewManager接收单击并调用控制器中负责导航的方法
如果您想进一步消除样板代码(单击处理程序、FIDVIEW BYIDID()调用等),请考虑使用类似于./P>的库。