嵌套片段 - 没有处理意图的活动

时间:2016-08-25 07:23:25

标签: android fragmenttransaction android-nested-fragment fragmentmanager

我有一个动态添加了片段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();

用片段B替换片段A

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中,我添加了Call的所有权限。

编辑 - 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);
    }
}

1 个答案:

答案 0 :(得分:0)

删除getActivity()并直接调用startActivity(i)

片段有自己的startActivity()方法。在这种情况下,您不需要传递活动上下文或引用。有关详细信息:Click here