[英]How to pass parameters to a class extending view in android from activity class
[英]How to access vibrator in android in a class that is not extending activity?
我正在嘗試使用名為VibrationManager的類中的以下內容訪問振動器,並且該類未擴展Activity
Vibrator v =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
但是日食拋出和錯誤
對於類型VibrationManager,未定義方法getSystemService(String)
這是我全班
public class VibrationManager {
private static VibrationManager me = null;
Vibrator v = null;
private Vibrator getVibrator(){
if(v == null){
v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
}
return v;
}
public static VibrationManager getManager() {
if(me == null){
me = new VibrationManager();
}
return me;
}
public void vibrate(long[] pattern){
}
}
請幫忙
您的課程沒有方法getSystemService
因為該課程沒有擴展Activity
。
如果您不想使用getSystemService
方法,則需要使用VibrationManager
類來擴展活動,或者需要接收該活動的上下文。
只需將代碼更改為使用上下文即可,為此,您還需要在靜態調用中獲取上下文。
public class VibrationManager {
private static VibrationManager me;
private Context context;
Vibrator v = null;
private Vibrator getVibrator(){
if(v == null){
v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
}
return v;
}
public static VibrationManager getManager(Context context) {
if(me == null){
me = new VibrationManager();
}
me.setContext(context);
return me;
}
private void setContext(Context context){
this.context = context;
}
public void vibrate(long[] pattern){
}
}
如果在從不同的視圖訪問上下文時遇到問題,可以執行以下操作:
創建一個擴展應用程序的類(例如MyApplication)
在清單中將該類聲明為Application類,如下所示:
<application android:name="your.project.package.MyApplication" ...
默認情況下,應用程序類是單例,但是您需要創建一個getInstance方法,如下所示:
public class MyApplication extends Application { private static MyApplication instance; public void onCreate() { instance = this; } public static MyApplication getInstance() { return instance; } }
完成后,您可以從應用程序中的任何位置訪問上下文,而無需傳遞如下所示的大量引用:
MyApplication app = MyApplication.getInstance()
Vibrator v = (Vibrator) app.getSystemService(Context.VIBRATOR_SERVICE);
到那里,您不僅可以致電振動器服務,還可以致電所需的任何服務...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.