如何从片段内开始活动?
我在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();