如何从片段内开始活动?

我在FragmentActivity里面有一组标签,每个标签都有自己的片段。 当我试图通过startActivity(myIntent)从该片段内开始一个新的活动,并使用startActivity(myIntent)方法时,我的应用程序强制closures。

找了一段时间后,我find了一个名为startActivityFromFragment的方法,但是在search了一个小时左右之后,我找不到任何有关如何使用它的解释或例子,或者这是我应该做的使用。

我想我要问的是,从一个活动启动一个新的活动,并从一个片段启动一个新的活动,是否有任何区别,如果是的话,我需要实现什么?

你应该用getActivity().startActivity(myIntent)

我做到了,下面的代码是为我工作….

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.hello_world, container, false); Button newPage = (Button)v.findViewById(R.id.click); newPage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), HomeActivity.class); startActivity(intent); } }); return v; } 

请确保您的目标活动应该在Manifest.xml文件中注册,

但在我的情况下,所有标签不显示在HomeActivity中,是否有任何解决scheme呢?

我这样做,从多个活动中出现的(自定义)菜单片段启动SendFreeTextActivity:

在MenuFragment类中:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_menu, container, false); final Button sendFreeTextButton = (Button) view.findViewById(R.id.sendFreeTextButton); sendFreeTextButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.d(TAG, "sendFreeTextButton clicked"); Intent intent = new Intent(getActivity(), SendFreeTextActivity.class); MenuFragment.this.startActivity(intent); } }); ... 

从片段和活动开始的活动之间的差异是如何获得上下文,因为在这两种情况下,它必须是一个活动。

从一个活动:背景是当前的活动( this

 Intent intent = new Intent(this, NewActivity.class); startActivity(intent); 

从片段:上下文是父活动( getActivity() )。 请注意,片段本身可以通过startActivity()启动活动,这不是必须从活动中完成的。

 Intent intent = new Intent(getActivity(), NewActivity.class); startActivity(intent); 

使用片段所在活动的基本上下文来启动一个Intent。

 Intent j = new Intent(fBaseCtx, NewactivityName.class); startActivity(j); 

其中fBaseCtx是您当前活动的BaseContext 。 你可以把它作为fBaseCtx = getBaseContext();