我按照其他问题的说明进行操作,但我的应用程序崩溃了。因此,我的一项 Activity 大约有 2,000 行代码。我想创建另一个仅保存代码的类,然后特定 Activity 运行另一个代码保存类中的方法,只是为了组织。
这是我尝试过的示例,但它不起作用。 Activity 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();
}
然后这是辅助类。 Activity 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();
我做错了什么? :/
最佳答案
您问的是一个有效的问题。我认为我不知道你的代码崩溃的原因。但请考虑一下:
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 {
}
这就是你想要“实现”的目标吗?
关于java - 如何运行另一个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852558/