Android 回调时出现空指针异常
我从中得到了一些活动识别的示例 问题是我希望用结果更新我的GUI,所以我尝试了回调,但得到了null异常。你能帮我还是给我其他选择 主要类别:Android 回调时出现空指针异常,android,nullpointerexception,callback,Android,Nullpointerexception,Callback,我从中得到了一些活动识别的示例 问题是我希望用结果更新我的GUI,所以我尝试了回调,但得到了null异常。你能帮我还是给我其他选择 主要类别: public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, MyCallback { public GoogleApiCli
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, MyCallback {
public GoogleApiClient mApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mApiClient = new GoogleApiClient.Builder(this)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mApiClient.connect();
}
@Override
public void onConnected(@Nullable Bundle bundle) {
Intent intent = new Intent(this, ActivityRecognizedService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(mApiClient, 3000, pendingIntent);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void callbackCall(int i)
{
//Here will be gui Update
Log.d("DTAG", "is: "+i);
}
}
回调接口:
interface MyCallback {
void callbackCall(int i);
}
ActivityRecognitedService:
public class ActivityRecognizedService extends IntentService {
MyCallback callback;
public ActivityRecognizedService() {
super("ActivityRecognizedService");
}
public ActivityRecognizedService(String name) {
super(name);
}
@Override
protected void onHandleIntent(Intent intent) {
if(ActivityRecognitionResult.hasResult(intent)) {
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
handleDetectedActivities( result.getProbableActivities() );
}
}
void onEvent() {
}
private void handleDetectedActivities(List<DetectedActivity> probableActivities) {
for( DetectedActivity activity : probableActivities ) {
switch( activity.getType() ) {
case DetectedActivity.IN_VEHICLE: {
Log.e( "ActivityRecogition", "In Vehicle: " + activity.getConfidence() );
callback.callbackCall(activity.getConfidence());
//return value for GUI update
break;
}
case DetectedActivity.UNKNOWN: {
Log.e( "ActivityRecogition", "Unknown: " + activity.getConfidence() );
break;
}
}
}
}
}
您尚未初始化
活动识别服务
中的回调
。在这种情况下,回调可能不是最好的方法,请引用以下答案:
您可能正在查找ResultReceiver类()。
扩展它,将其与调用服务的意图一起传递(它是可打包的),然后当任务在服务中完成时,使用结果调用ResultReceiveServer的onReceiveResult()方法
使用((MyCallback)activity.callbackCall(activity.getConfidence())代码>
里面
案例检测活动。在车辆中:{
您需要启动回调以使其工作
尝试在ActivityRecognizedService构造函数中传递MyCallback实例,并在MainActivity上启动ActivityRecognizedService时执行以下操作:
new ActivityRecognizedService(new MyCallback(...))
并实现了回调的方法。
我希望这有帮助ClassCastException:com.google.android.gms.location.DetectedActivity不能强制转换为danm.com.movetest.MyCallback什么是DetectedActivity?在您的代码中,只有具有MyCallback Interface的mainactivity
new ActivityRecognizedService(new MyCallback(...))