2014-07-01 3 views
1

저는 비 활동 클래스에 맞춤형 진동기를 만드는 데 this previous thread에서 제안 된 전략을 사용했습니다.활동이없는 수업에 진동 권한을 부여하는 방법은 무엇입니까?

import android.content.Context; 
import android.os.Vibrator; 
public class IntensityVibrator { 
    private static IntensityVibrator iv; 
    private Vibrator vib= null; 
    private Context context; 
    private Vibrator getVibrator(){ 
     if(vib == null){ 
      vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     } 
     return vib; 
    } 


    public static IntensityVibrator getManager(<an_activity> context) { 
     if(iv == null){ 
      iv = new IntensityVibrator(); 
     } 
     iv.setContext(context); 
     return iv; 
    } 


    private void setContext(Context context){ 
     this.context = context; 
    } 

    public void regularVibrate(long millis){ 
    vib.vibrate(millis); 
    } 
    } 

나는 다른 클래스에서이 방법을 사용하고 있습니다 :

vib = (IntensityVibrator) IntensityVibrator.getManager(<an_activity>);

나는 VIB의 객체가 아닌 활동 클래스 생성 된 클래스를. 따라서 an_activity 컨텍스트를 통해 컨텍스트를 전달합니다.

앱이 마지막 메소드가 호출 될 때 시간이 충돌합니다. 디버깅은 vib.vibrate (millis)가 호출 될 때까지 코드가 정상적으로 작동 함을 보여줍니다. 여기에 무슨 문제가 될지 짐작할 수 있습니까?

+2

나는 당신의 타이틀을 좋아했습니다. – jackjop

답변

2

null하는 결과로, 당신은 당신의 vib 클래스 변수를 초기화하지 나에게 보인다 vib를 초기화 regularVibrate 귀하의 개인 getVibrator 메소드를 호출 할 때 당신은 호출되지 않은 NullPointerException를 얻을 : 당신이 getManager에 전화해야 setContext을 호출 한 직후입니다.

관련 문제