[英]Variable access from within inner class
我在Awareness API中創建了一個用於檢查隔離狀態的函數。 但是我需要返回結果。 因此,我聲明了布爾值,但需要將其聲明為最終值。 您能為我提供解決方案如何返回此值的方法嗎?
public static boolean isFencesActive(final Context context) {
boolean isActive;
Awareness.getFenceClient(context).queryFences(FenceQueryRequest.forFences(Arrays.asList(Constans.DETECTION_FENCE_DRIVING, Constans.DETECTION_FENCE_WALKING)))
.addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
@Override
public void onSuccess(FenceQueryResponse fenceQueryResponse) {
FenceStateMap map = fenceQueryResponse.getFenceStateMap();
isActive = !map.getFenceKeys().isEmpty(); //Needs to be final
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "Failed: " + e);
isActive = false;
}
});
return isActive;
}
@Dim,您必須使用如下代碼(使用您要實現的功能):
public static void isFencesActive(final Context context) {
Awareness.getFenceClient(context).queryFences(FenceQueryRequest.forFences(Arrays.asList(Constans.DETECTION_FENCE_DRIVING, Constans.DETECTION_FENCE_WALKING)))
.addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
@Override
public void onSuccess(FenceQueryResponse fenceQueryResponse) {
FenceStateMap map = fenceQueryResponse.getFenceStateMap();
if(!map.getFenceKeys().isEmpty()){
//Perform your operation here is the better way
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "Failed: " + e);
}
});
}
經過一番考慮,我了解到這是異步任務,這就是為什么我收到錯誤消息的原因。 我所做的是創建將這些信息發送到我的活動的回調。
這可能對您有幫助,請聲明boolean isActive;
全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.