-1

У меня есть активность с фрагментом A, добавленным к ней динамически. Теперь я транскрибирую фрагмент A в фрагмент B. И затем от фрагмента B до фрагмента C. Теперь у меня есть кнопка при нажатии, поместит вызов. Я не могу запустить намерение вызова, и в журнале ошибок указано незаконное государственное исключение. Никакой активности не найдено для обработки намерения. Означает ли это, что для вложенного фрагмента C нет активности? Как это может произойти (создание фрагмента без активности)? Также все фрагменты динамически создаются во время выполнения. Я пробовал это с использованием метода getfragmentmanager() и getchildfragmentmanager(). Я сталкиваюсь с этой ошибкой в ​​обоих случаях. Любые предложения будут высоко ценится.Вложенный фрагмент - нет активности для обработки намерения

Вот мой фрагмент кода

Прикрепление фрагмента А к активности

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.add(R.id.container,FragmentA_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

Замена фрагмента А с фрагментом B

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(R.id.container, FragmentB_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

Замена Фрагмент B с фрагментом C

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(R.id.container, FragmentC_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

Вызов Намерение

public void call(String contact){ 
Intent i=new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+contact)); 
getActivity().startActivity(i); 
} 

В моей Manifest.xml я добавил все разрешения для вызова.

Edit - 2 Фрагмент C код

@EFragment(R.layout.fragment_c) 
public class FragmentC extends Fragment 
{ 
@Click(R.id.call_button) 
void call(){ 
call(phone_number); 
} 
    public void call(String contact){ 
    Intent i=new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+contact)); 
    getActivity().startActivity(i); 
    } 
} 
+0

Нет, я уверен, что я следил за приложением, как упоминалось в моем вопросе. Кроме того, я добавил только фрагмент A, оставлю все фрагменты, которые использовал метод replace. – Krishna

+1

Можете ли вы опубликовать код, в котором вы инициируете намерение вызова, также я хочу взглянуть на ваши разрешения. – himanshu1496

+0

Не могли бы вы поделиться каким-то кодом? –

ответ

0

Удалить getActivity() и вызов непосредственно startActivity (я)

Фрагменты имеют свой собственный метод startActivity(). В этом случае вам не нужно передавать контекст активности или ссылку. Для получения дополнительной информации: Click here

+1

Большое спасибо за своевременный ответ! Действительно ценю это ! – Krishna

 Смежные вопросы

  • Нет связанных вопросов^_^