如何从另一个类运行方法?

时间:2014-04-04 02:44:50

标签: java android methods helper stack-overflow

我按照其他问题的说明操作,但我的应用程序崩溃了。因此,我的一项活动有大约2,000行代码。我想创建另一个只保存代码的类,然后特定的活动从其他代码保存类运行该方法,仅用于组织。

所以这是我尝试的例子,但它不起作用。 ActivityA:

public class ActivityA extends Activity {

ActivityB test= new ActivityB();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

  testing();

    }

public void testing() {
      test.codeTest();
}    

然后这是助手类。 ActivityB:

public class ActivityB extends ActivityA{

    public void codeTest() {    
    //2,000 lines of code
    }

应用程序崩溃了。我究竟做错了什么? :/我也尝试过:

public class ActivityA extends Activity {

ActivityB test= new ActivityB();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

  test.codeTest();

}

我觉得自己甚至是一个白痴甚至在这个>上寻求帮助。<

我得到的错误是:

java.lang.StackOverflowError.

错误的行是:

public class ActivityA extends Activity {

public class ActivityB extends ActivityA{

和最后一行错误代码是

ActivityB test= new ActivityB();

我做错了什么? :/

3 个答案:

答案 0 :(得分:2)

你问的是一个有效的问题。我不认为我能解答你的代码崩溃的原因。但请考虑一下:

A将包含B,B中将包含A,其中包含B,其中包含B,其中包含B. ..

这可能是堆栈溢出的来源。如果您单步执行代码,程序在什么时候崩溃?

另外,如果您使用静态函数创建静态类,则可以做得很好。

  public static class myUtility {


   public static void someFunction() { . . .}





 }

编辑: 在盯着您的代码几分钟后,我可能已经理解了您要做的事情。让我试一试:

说你想要"脏"代码在B中。将B声明为抽象:

public abstract class ActivityB extends Activity {
 . . . 

}

然后为你的A班,

public class ActivityA extends Activity implements ActivityB {

}

这就是你想要的"实现"?

答案 1 :(得分:0)

问题似乎与您在活动A中实例化活动B这一事实有关,但您的目的是让活动B成为活动的延伸甲

public class ActivityA extends Activity {

ActivityB test= new ActivityB();  // i.e., this line is suspicious Activity B extends A which instantiates B...it's a bit circular... 

答案 2 :(得分:0)

添加其他答案,您正在创建一个2合1活动* infinty。只需声明并初始化您的帮助" class作为活动中的新对象:

MyHelper helper = new MyHelper(context);
// Now, you can access your helper class' functions
String string = helper.helperMethod();

我希望这有助于您理解,快乐编码!