-1

我有一个活动,片段A动态添加到它。现在,我从片段A到片段B进行处理,然后从片段B到片段C.现在我点击一个按钮时会有一个按钮进行调用。我无法启动呼叫意图,错误日志显示非法状态异常 - 找不到处理意图的活动。这是否意味着没有发现嵌套片段C的活动?这怎么可能发生(没有活动的片段创建)?所有片段也都是在运行时动态创建的。 我尝试过使用getfragmentmanager()和getchildfragmentmanager()方法。 我在这两种情况下都面临这个错误。任何建议将不胜感激。嵌套片段 - 没有活动来处理意图

这里是我的代码片段

附加片段A到活动

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(); 

更换片段A与片段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(); 

与C片段更换片段B

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我已经加入了通话的所有权限。

编辑 - 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,休息了我用过的所有片段替换方法。 – Krishna

+1

你可以在你发起呼叫意向的地方发布代码,我也想看看你的权限。 – himanshu1496

+0

你能分享一些代码吗? –

回答

0

删除getActivity()和直接调用startActivity(ⅰ)

片段具有其自己的startActivity()方法。在这种情况下,您不需要传递活动上下文或引用。欲了解更多信息:Click here

+1

非常感谢您的及时回复!真的很感激它! – Krishna

相关问题