2015-08-12 1 views
0

В моем UiFragment frgament У меня есть, где я пытаюсь подключиться к своему устройству.вызов setResult из класса обслуживания

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      switch (requestCode) { 
       case REQUEST_CONNECT_DEVICE_SECURE: 
        // When DeviceListActivity returns with a device to connect 
        if (resultCode == Activity.RESULT_OK) { 
         connectDevice(data); 
        } 
        break; 
      } 
    } 

и у меня также есть StartScanService класс, где мне нужно сделать что-то похожее на setResult (как и я, что в классе деятельности)

public class StartScanService extends Service { 
... 
... 
private void connect(String tmp){ 
     adapter.cancelDiscovery(); 

     String address = tmp.substring(tmp.length() - 17); 

     // Create the result Intent and include the MAC address 
     Intent intent = new Intent(); 
     intent.putExtra(EXTRA_DEVICE_ADDRESS, address); 

     // Set result 
     //setResult(Activity.RESULT_OK, intent); 

    } 

}

Так что нужно вызвать класс фрагмент метод из класса обслуживания. Можно ли это сделать?

ответ

0

я использую интерфейс. Сначала я создаю интерфейсу

public interface ServiceCallBack { 
    void connectToDevice(Intent intent); 
} 

и в моем классе обслуживания я называю метод интерфейса 'connectToDevice'

public class StartScanService extends Service { 
... 
... 
... 
private ServiceCallBack serviceCallBack; 

private void connect(String tmp){ 
     adapter.cancelDiscovery(); 

     String address = tmp.substring(tmp.length() - 17); 

     // Create the result Intent and include the MAC address 
     Intent intent = new Intent(); 
     intent.putExtra(EXTRA_DEVICE_ADDRESS, address); 

     if (serviceCallBack != null) { 
      serviceCallBack.connectToDevice(intent); 
     } 
    } 

}

Мой класс Фрагмент должен реализует интерфейс ServiceCallBack

public class UiFragment extends Fragment implements ServiceCallBack{ 
private ServiceConnection connectionService = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     Log.d(TAG + " VEG", "onServiceConnected"); 
     StartScanService.ScanBinder scan = (StartScanService.ScanBinder) service; 
     startScanService = scan.getScanService(); 
     startScanService.setHandler(handler); 
     startScanService.setServiceCallBack(UiFragment.this); 
     startScanService.startScan(); 
     bound = true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     bound = false; 
     Log.d(TAG, "onServiceDisconnected"); 
    } 
}; 

@Override 
public void connectToDevice(Intent intent) { 
    connectDevice(intent); 
} 
}