Java 关于活动以及如何保持通用性所需的建议

Java 关于活动以及如何保持通用性所需的建议,java,android,android-activity,multiple-inheritance,listactivity,Java,Android,Android Activity,Multiple Inheritance,Listactivity,我正在为用户单击AlertDialog选项时可能发生的所有操作创建一个公共位置/类。我发现了这个,但它并没有真正帮助我理解这个概念。这就是我想要做的 我有一个从Activity扩展而来的类(ClassA),还有一个从ListActivity扩展而来的类(ClassB) 无论从何处调用,我都会弹出警报对话框 我创建了一个BaseRootActivity类,它在ClassA中进行了扩展。因为ClassB是从RootListActivity类扩展而来的,所以我无法调用BaseRootActivity内

我正在为用户单击AlertDialog选项时可能发生的所有操作创建一个公共位置/类。我发现了这个,但它并没有真正帮助我理解这个概念。这就是我想要做的

  • 我有一个从Activity扩展而来的类(ClassA),还有一个从ListActivity扩展而来的类(ClassB)
  • 无论从何处调用,我都会弹出警报对话框
  • 我创建了一个BaseRootActivity类,它在ClassA中进行了扩展。因为ClassB是从RootListActivity类扩展而来的,所以我无法调用BaseRootActivity内部的方法,尤其是那些使用上下文方法的方法

  • 我可以根据链接创建两个单独的泛型列表活动,但代码会在两个类中重复。我想避免这种情况。有没有一种方法可以做到这一点,我知道答案可能在给出的链接中,但是,我不能真正理解用户所陈述的基本逻辑。如果您能在这方面提供帮助,我将不胜感激。

    您应该总是更喜欢组合而不是继承。因此,您有两个很好的选择:

    • 只需将对话框逻辑放在第三个类中,您将使用
      ClassA
      ClassB
      (不扩展它,只使用它)
    • 使用Fragments API(您可以使用使其在旧版本的Android上可用);在那里,您可以找到一个名为
      DialogFragment
      的类,它基本上迫使您在单独的类上创建对话框(顺便说一句,这是一个好主意),并且如果您选择遵循第一个选项,它将帮助您处理可能面临的问题

    你应该总是喜欢组合而不是继承。因此,您有两个很好的选择:

    • 只需将对话框逻辑放在第三个类中,您将使用
      ClassA
      ClassB
      (不扩展它,只使用它)
    • 使用Fragments API(您可以使用使其在旧版本的Android上可用);在那里,您可以找到一个名为
      DialogFragment
      的类,它基本上迫使您在单独的类上创建对话框(顺便说一句,这是一个好主意),并且如果您选择遵循第一个选项,它将帮助您处理可能面临的问题

    我试过把它放在三等舱里。但是我需要getBaseContext()不为null才能创建对话框和意图。当该方法位于第三类中时,getBaseContext()不为null。我将查看兼容性库,看看它是否有效。谢谢你的快速回复。好的。。。但是,您能再解释一下getBaseContext()问题吗?事实上,为什么需要getBaseContext()?为什么不直接传递活动引用呢?人们总是说,由于内存问题,活动本身不应该作为引用传递。早些时候,当我将活动传递到不同的类时,我遇到了严重的内存问题。我从来没有在对话框上遇到过问题,毕竟它们几乎与打开它们的活动相关联。我不认为是对话框导致了问题。我在android网站上读到,不确定在哪里,我们不应该将getBaseContext()传递给其他方法或类,这可能会导致内存泄漏。错了吗?我试过把它放在三等舱里。但是我需要getBaseContext()不为null才能创建对话框和意图。当该方法位于第三类中时,getBaseContext()不为null。我将查看兼容性库,看看它是否有效。谢谢你的快速回复。好的。。。但是,您能再解释一下getBaseContext()问题吗?事实上,为什么需要getBaseContext()?为什么不直接传递活动引用呢?人们总是说,由于内存问题,活动本身不应该作为引用传递。早些时候,当我将活动传递到不同的类时,我遇到了严重的内存问题。我从来没有在对话框上遇到过问题,毕竟它们几乎与打开它们的活动相关联。我不认为是对话框导致了问题。我在android网站上读到,不确定在哪里,我们不应该将getBaseContext()传递给其他方法或类,这可能会导致内存泄漏。这不对吗?