Хочу получить Receiver . делаю следующие шаги но прога падает
public class MvpApp extends Application{
private ApplicationComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this)).build();
mApplicationComponent.inject(this);
}
public ApplicationComponent getmApplicationComponent() {
return mApplicationComponent;
}
}
вот модуль
@Module
public class ApplicationModule {
private final Application mApplication;
public ApplicationModule(Application mApplication){
this.mApplication = mApplication;
}
@Provides
@ApplicationContext
Context provideContext() {
return mApplication;
}
@Provides
Application provideApplication() {
return mApplication;
}
@Provides
BluetoothConnectionStateRepository provideBluetoothConnectionStateRepository(BluetoothConnectionStateModel bluetoothConnectionStateModel){
return new BluetoothConnectionStateRepositoryImpl(bluetoothConnectionStateModel);
}
@Provides
BluetoothConnectionStateModel provideBluetoothConnectionStateModel(){
return new BluetoothConnectionStateModel();
}
@Provides
BluetoothConnectionStateReceiver provideBluetoothConnectionStateReceiver(){
return new BluetoothConnectionStateReceiver();
}
}
компонент
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(MvpApp app);
void inject(BluetoothConnectionStateReceiver bluetoothConnectionStateReceiver);
@ApplicationContext
Context context();
Application application();
BluetoothConnectionStateRepository repository();
BluetoothConnectionStateModel model();
BluetoothConnectionStateReceiver receiver();
}
Вот и cсам Receiver падает там где делаетсся ((MvpApp)context).getmApplicationComponent().inject(this); пишет не могу привести тип
public class BluetoothConnectionStateReceiver extends BroadcastReceiver{
@Inject
BluetoothConnectionStateRepository mBluetoothConnectionStateRepository;
@Override
public void onReceive(Context context, Intent intent) {
((MvpApp)context).getmApplicationComponent().inject(this);
String action = intent.getAction();
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// When discovery finds a device
if (action.equals(mBluetoothAdapter.ACTION_STATE_CHANGED)) {
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, mBluetoothAdapter.ERROR);
switch(state){
case BluetoothAdapter.STATE_OFF:
mBluetoothConnectionStateRepository.changeConnectionState(false);
break;
case BluetoothAdapter.STATE_TURNING_OFF:
break;
case BluetoothAdapter.STATE_ON:
mBluetoothConnectionStateRepository.changeConnectionState(true);
break;
case BluetoothAdapter.STATE_TURNING_ON:
break;
}
}
}
}
Не каждый контекст ==
Application.
Сначала необходимо из контекста получить application context, а потом уже приводить к Application.
((MvpApp)context.getApplicationContext()).getmApplicationComponent().inject(this);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В общем ,решил внедрить в приложение google карты через фрагменты,в конченом итоге получил 2 ошибки:"Cannot resolve method 'setContentView' Cannot resolve method 'getSupportFragmentManager'",не...
Установил intellij idea 20172, но при создании проекта в поле "Project SDK" значится надпись "No SDK"
Есть база данных postgresql, есть java класс который показывает все данные, как сортировать как чтобы, раньше показанные данные повторно не показывались,...