我有一个内部静态类,它在我的主Activity中扩展了线程。在这个线程中,我需要从我的主Activity调用一个非静态方法。调用非静态方法int静态类
依我之见,我有两个选择:
- 让我非静态方法静态:此选项不会是这种方法里面可行,因为我打电话startActivityForResult,我不能在静态调用此办法。
在内部静态类中创建主Activity的对象,并通过此对象调用方法。
MainActivity mActivity = new MainActivity(); //... mActivity.method();
我现在使用的一个是第二,但我有一个疑问。如果我这样做,我明白我正在创建一个MainActivity的新实例,并且执行此操作时,onCreate方法中的所有定义都称为?或者我只是调用方法,我在里面使用的变量将为空?
更新 -
这是内部类,我需要调用从主要的方法。我需要这是静态的,因为应用程序的基本功能需要它这样。现在我介绍的主要活动的新方法,当一个动作的线程中发生时必须调用:
private static final class DetectionThread extends Thread {
//...
public DetectionThread(byte[] data, int width, int height) {
}
@Override
public void run() {
//DO STUFF HERE
//Action happens and calls the method from main activity:
SpeechWhenMotion();
//...
}
}
}
这是在主要活动中定义的方法的头。里面的是我打电话给这对于结果开始活动的另一种方法,所以这就是为什么我不能设置方法为静态的原因:
public void SpeechWhenMotion() {
//...
}
发布代码将解释更多。 –
您不会因为您将您的方法编码为静态而您不决定使用static关键字,反之亦然。看看你是否可以改变你的设计,并思考一下你的逻辑是否在不同实例之间变化,或者始终保持静态。 – prabugp
内部静态类如果内部类应该使用外部类的非静态方法,那么它看起来应该不是静态的。你可以添加一些你的设计决定的解释吗? – Pshemo