java怎么分成三个文件_关于Java:Java-Android-将“活动/类”分成多个文件以更好地组织(解决方案)...

本文介绍了如何解决Java活动中代码过于庞大的问题,尤其是Android应用中的活动。作者提出了一种方法,通过创建一个名为ViewManager的单独类来处理视图关注点,从而使Activity仅作为控制器。此外,利用内部类和抽象类的概念,可以将OnClickListener等处理程序拆分到不同的文件中,同时保持对私有字段的访问。这种方法有助于代码的组织和可维护性。
摘要由CSDN通过智能技术生成

我不是JAVA的专业人士,但是我发现自己因Android活动变得过大而发疯。

几页代码长度后,我发现自己一直来回滚动!

不仅OnClickhandlers可以发展壮大,而且很多代码往往会总结成更大的活动。

碎片对我来说不是解决方案。

通常,Java不允许将一个类拆分为多个文件,因此需要进行修改。

关于这一点,我浏览了很多stackoverflow线程,没有一个解决方案。

无论如何我都解决了,也许这对其他人有帮助。

这是Android的一个重点,因为我为所有菜单和按钮所占用的庞大的onClick Handler感到烦恼,但我想它同样适用于其他一般Java问题。

我遵循的一种简单方法是将View关注点移到一个单独的类中(我们称为ViewManager),并使Activity / Fragment仅作为控制器工作。

ViewManager通常负责-

扩大布局

获取所有视图的引用

在视图中显示数据

处理点击/触摸事件

动画制作

活动/片段仅负责-

提取数据并将其传递给ViewManager以显示数据

处理导航

将数据发布到服务器/数据库

对于触发控制器负责的动作的UI控件(例如,单击按钮时启动新活动),ViewManager会收到该单击并调用控制器中负责导航的方法。

如果要进一步消除样板代码(单击处理程序,findViewById()调用等),请考虑使用类似ButterKnife的库。

一种解决方案很简单,您可以将主类字段设为public

但是,这会使您的代码混乱,您应尽可能将字段设为私有。

除了可以更好地完成IDE的代码完成性之外,它还可以保护类免受非法的外部操纵。

现在对我来说,诀窍是内部类。

内部类可以访问其父级的私有字段,但是Java也不允许将内部类放入另一个文件中。

必须在父类内部定义它。

在这里,我开始进行挖掘并找到了可以被接受的解决方案。

如果这伤害了Java专家,我将不胜感激;)

诀窍是在自己的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

}

}

若要使此工作如广告所示,您需要将MainActivity / Parent的private属性更改为protected。

现在,扩展的内部类具有对父字段的访问权限,但是任何外部类仍然无法访问它。

在这种情况下,我为所有onclick侦听器提供了一个专用的类,可以将第二个类用于其他用途。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值