我有一个TabActivity,其中包含3个更多的活动,它们组成选项卡。我想在其中一个选项卡上创建一个列表视图,但我开始感到困惑了。我是否需要创建另一个扩展ListActivity的.java文件?如果我需要为每个activity创建一个单独的.java文件,即使是相对较小的应用程序,也可能变得非常庞大。
附注:
如果我想将ListView添加到其中一个选项卡中,我该怎么做?到目前为止,我找到的所有内容都没有提到如何将新活动添加到其他活动中。
嵌套类:
public class A {
public/private class B {
}
}
B 的实例可以访问 A 的私有变量,但不能在没有 A 实例的情况下构造 B 实例(这通常是用于按钮处理程序等的方法)。
嵌套静态类:
public class A {
public/private static class B {
}
}
B类的实例不能访问A类的私有变量,但是它们不需要A类的实例就可以被构造。如果B类被声明为public,则可以在任何地方实例化B类;如果B类被声明为private,则只能在A类的方法中实例化。
匿名类:
public class A {
private void setupLayout() {
...
button.addClickListener(new ActionListener() {
public void actionPerfored(ActionEvent e)
{
handleClick();
}
});
}
}
这种奇怪的语法创建了一个没有名称的类,并且与嵌套类相同(例如可以访问私有变量)。它是编写嵌套类的另一种形式,有时更短,但会导致非常奇怪的语法。
Java不支持在抽象类或普通类上进行多重继承,但只能在接口上进行。
您可以创建扩展特定Activity
的抽象类,并不断创建抽象类,直到您拥有一个继承所有活动功能的类。
或者,可以有一个类继承多个接口。
如果您使用集成开发环境来实现这个,会比较容易创建多个文件的开销小。
但是,在同一个文件中拥有多个类的方法也有一些。其中包括:a) 使用内部/嵌套类 b) 匿名类 c) 枚举 d) 包局部类。
唯一无法轻松完成的事情是将类定义分散在多个文件中。
Java不允许多重继承,但它允许实现多个接口。你不需要为每个类创建一个单独的文件(虽然这是一个好习惯)。你可以将子类封装在文件的主要类中。
ListView
可以简单地extend
,并且您可以在xml等中使用相应的扩展类。
Java在某种程度上支持多重继承,只需将基类定义为抽象类并将其称为接口
而不是类
即可。
你可以在XML中简单地声明一个ListView
,并在Activity
中调用它,无需为ListView
单独创建一个ListActivity
。这适用于整个Activity
都是ListView
的情况。
至于更多类的问题,这并不是坏事。更多的类意味着更多的面向对象,虽然不是严格的(一切都有限度)。
多重继承被认为不好,因为会出现“死亡之钻”问题。所以解决方法是使用Java中的Interface
(Objective-C中的普通类)来代替纯虚类。
我建议你阅读HeadFirst Java第二版,以更好地掌握术语及其用法。这是一本适合初学者的好书。