내 주 활동 내 스레드를 확장하는 내부 정적 클래스가 있습니다. 이 스레드에서는 필자의 주요 활동에서 비 정적 메서드를 호출해야합니다.비 정적 메서드 int 정적 클래스를 호출
- 내 비 정적 메서드가 정적 확인 : I시피
, 나는 두 가지 옵션이 있습니다이 옵션은 내가에 startActivityForResult 호출이 방법 내부 가능한 원인이되지 않을 것 나는 정적이를 호출 할 수 없습니다 방법.
내 정적 클래스 내부에 내 주요 활동 객체를 만들고이 객체를 통해 메소드를 호출하십시오.
MainActivity mActivity = new MainActivity(); //... mActivity.method();
내가 지금 사용하고 한
두 번째,하지만 난 그것에 대해 의심의 여지가있다. 이 작업을 수행하면 MainActivity의 새 인스턴스를 만들고 이것을 이해하며 onCreate 메서드의 모든 정의가 호출됩니까? 아니면 방금 메서드를 호출하고 내부에서 사용하는 변수가 null이 될까요?UPDATE -
이 내가 주에서 메소드를 호출 할 필요가 내부 클래스입니다. 애플 리케이션의 기본 기능이 이런식이 필요하기 때문에 정적이 필요합니다. 지금은 작업 스레드 내부에서 발생했을 때 호출 할 필요가 주요 활동의 새로운 방법을 도입하고 있습니다 :
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
'inner static class' 내부 클래스가 외부 클래스의 비 정적 메소드를 사용한다고 가정하면, 처음에는 정적이 아니어야합니다. 디자인 결정에 대한 설명을 추가 할 수 있습니까? – Pshemo