Если Dagger2 не может сгенерировать свои компоненты, это означает, что в вашем коде есть ошибки с областями действия / модулями. Проверьте наши методы @ Provides / Inject.
UPD:
Вы должны внедрить свои компоненты в случаи, когда вам нужны экземпляры классов, предоставляемые модулем.
как
inject(MainActivity main);
Вызов дочерней активности Intent с помощью вызова метода startActivityForResult ()
Вот пример этого: http://developer.android.com/training/notepad/notepad-ex2.html
и в разделе «Возврат результата с экрана»: http://developer.android.com/guide/faq/commontasks.html#opennewscreen
Есть несколько способов достичь желаемого, в зависимости от обстоятельств.
Наиболее распространенный сценарий (как звучит у вас) - это когда дочернее действие используется для получения пользовательского ввода - например, выбора контакта из списка или ввода данных в диалоговом окне. В этом случае вы должны использовать startActivityForResult
для запуска дочернего Activity.
Это обеспечивает конвейер для отправки данных обратно в основную Activity с использованием setResult
. Метод setResult принимает значение результата типа int и намерение, которое передается обратно вызывающей активности.
Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
resultIntent.putExtra("some_key", "String data");
setResult(Activity.RESULT_OK, resultIntent);
finish();
Для доступа к возвращаемым данным в вызывающей операции переопределение onActivityResult
. RequestCode соответствует целому числу, переданному в вызове startActivityForResult
, в то время как resultCode и data Intent возвращаются из дочернего Activity.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (MY_CHILD_ACTIVITY) : {
if (resultCode == Activity.RESULT_OK) {
// TODO Extract the data returned from the child Activity.
String returnValue = data.getStringExtra("some_key");
}
break;
}
}
}