2011-03-17 39 views
0

对不起,我是一个新手到Java和Android ...使用子类在Android中

我做了有一个大的主要活动的应用程序,我想它分裂成一些孩子班让事情更容易阅读,编辑等

从我的主类我(觉得)我实例化,并调用子类,从内部的onResume:

SetupButtons SetupButtonsObject = new SetupButtons(); 
      SetupButtonsObject.buildthem(); 

而在子类我做:

 class SetupButtons extends main { 

    void buildthem(){ 
//a load of things to setup buttons 
} 

} 

我在buildthem()中使用的代码在主类中使用时工作正常,但在子类中使用时会给出空指针异常。

我是否需要将主要上下文传递给孩子或其他东西?

非常感谢 汤姆

回答

0

Activity类不应该由开发人员直接实例化,将此工作留给android。如果你想分解它,你为什么延长你的主要活动?正如Nanne所说,你需要将你的应用划分为逻辑部分。

+0

我不认为我实例化活动是我吗?我试图把它分成逻辑部分......我认为使用儿童班将是一个好方法。当然,如果我想使用主要活动的变量,我需要扩展它。 – 2011-03-17 10:40:38

+0

我不确定,因为我看不到你的代码,但'类SetupButtons扩展main',你告诉你的主要活动,所以我决定'main'这里是你的主要活动。如果你想使用主活动的变量,你可以把它们作为参数传递给你的“逻辑部分”类的构造函数。 – ernazm 2011-03-17 10:53:06

0

在同一类,你可以直接调用该方法。像buildthem();

1

任何你在没有设置的子类中使用的东西,但是在主类中设置,你必须以某种方式从主类中获取。所以是的,你需要一些背景。

但是在你做之前:你可能想要把你的应用划分为你的溶剂的逻辑部分,正如你可以在任何OOP描述中看到的那样。所以不要把它分成几部分,因为它会使它变小,以合乎逻辑的单位将它切成实际的好物体。

一个快速类型,希望我在这里没有犯任何错误,但看到子类中的注释。

class Parent{ 
    public static int foo = 1; 
    public static int bar = 0; 

    public function somefunction(){ 
     bar = 1; 
     myChild = new Child(); 
    } 

} 

class Child extends Parent{ 
    //you can find foo = 1 
    //but not bar = 0; 
} 
+0

谢谢,我在孩子中使用的所有变量被设置在主类中,定义为static public.So我认为通过继承,他们应该可以由孩子访问? – 2011-03-17 10:30:27

+0

增加了一个例子 – Nanne 2011-03-17 10:53:07

+0

谢谢。我通过简化子类中的代码做了更多的测试。看起来变量正在被访问正常,并且可以从子类更新。这是按钮的findviewbyID,它在儿童中使用,似乎是问题所在。 – 2011-03-17 11:06:58