作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用了 this previous thread 中建议的策略在非 Activity 类中创建自定义振动器。
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);
}
}
我正在以这种方式在其他类(class)中使用它:
vib = (IntensityVibrator) IntensityVibrator.getManager(<an_activity>);
我创建vib对象的类也是非activity类。因此,我通过 an_activity 上下文传递上下文。
调用最后一个方法时应用程序崩溃的次数。调试显示代码在调用 vib.vibrate(millis) 之前工作正常。你能猜出这里的问题是什么吗?
最佳答案
在我看来你从来没有初始化你的 vib
类变量,因此它是 null
你会得到一个 NullPointerException
打电话时 regularVibrate
您的私有(private)getVibrator
方法,初始化 vib
, 从未被调用:你应该在 getManager
中调用它, 就在调用 setContext
之后.
关于android - 如何为非 Activity 类授予振动权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507366/
我是一名优秀的程序员,十分优秀!