【问题标题】:How do I run a method from another class?如何运行另一个类的方法?
【发布时间】:2014-05-16 03:54:14
【问题描述】:

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

所以这是我尝试过的示例,但它不起作用。活动A:

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();
}    

那么这里是辅助类。活动B:

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();

我做错了什么? :/

【问题讨论】:

    标签: java android methods helper stack-overflow


    【解决方案1】:

    您在问一个有效的问题。我认为我无法回答您的代码崩溃的原因。但是考虑一下:

    A 将包含 B,B 将在其中包含 A,其中包含 B,其中将包含 A,其中将包含 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 {
    
    }
    

    这就是你想要“实现”的目标吗?

    【讨论】:

    • 完全有道理,因为它做一个“循环”模式。它崩溃的第一点是:public class ActivityA extends Activity {
    • 我接受了这个作为正确答案,即使每个人都是正确的,即使我放弃了,因为它仍然不适合我。不过谢谢!
    【解决方案2】:

    添加到其他人的答案,您正在创建一个 2 合 1 活动 * 无限。只需在您的活动中声明并初始化您的“助手”类作为新对象:

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

    我希望这有助于您的理解,祝您编码愉快!

    【讨论】:

    • 我以为我用 ActivityB test= new ActivityB();然后我使用了 test.codeTest();我现在放弃了,我只想使用 ActivityA 并保持很长时间。不过,我非常感谢您抽出宝贵的时间做出回应。非常感谢!
    【解决方案3】:

    问题似乎与您在 Activity A 中实例化 Activity B 的事实有关,但您的意图是使 Activity B 成为 Activity A 的扩展。 p>

    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... 
    

    【讨论】:

    • 确实有道理。我会再玩一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多