[英]Start Intent activity from fragment fail - android
我想从片段开始活动,但失败。
这是我的代码
MainActivity myactivity = (MainActivity) getActivity();
Intent intent = new Intent(myactivity, PopUpImageActivity.class);
Bundle extras = new Bundle();
myactivity.startMyIntent(intent);
尝试这个:
startActivity(new Intent(getActivity().getApplicationContext(), YourActivity.class));
除了从您的activity
中进行intent
,为什么不对fragment
类本身进行intent
?
例如,
Intent intent = new Intent(getActivity(), PopUpImageActivity.class);
getActivity().startActivity(intent);
这应该可以工作,并且不需要访问您的activity
因为所有fragment
仍然驻留在一个activity
,并且它本身已经知道了要驻留的activity
,而没有指定它
上面的答案可能是正确的,也可能不是正确的,但是为了最佳实践,总是允许通过包含相应 Fragment的Activity进行交易。
利用Fragment中的interface onAttach ()来调用封闭的Activity并从该活动调用该活动,并允许进行另一个活动/片段事务。
示例代码如下所示:
public class MyFragmentExample extends Fragment{
//Creating instance of Interface
AnyInterfaceName anyInterfaceName;
/*
This onAttach is responsible for attaching the interface
listener of fragment to Activity
*/
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
anyInterfaceName = (AnyInterfaceName) context;
} catch (ClassCastException ex) {
throw new ClassCastException(ex.getMessage() + "must implement AnyInterfaceName");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return view;
}
// Define an interface with any name
public interface AnyInterfaceName{
/*
you can give any name to this function & this
function will be implemented later in activity
*/
void startAnotherActivity();
}
}
现在在“活动”端:在扩展Activity / AppCompActivity之后, 将其添加到顶部
实现MyFragment.AnyInterfaceName
之后,只需实现方法和方法内部,就可以使用Intent从Activity转移到Another Activity。
注意:当您要启动另一个Activity时, 请不要忘记分段调用该接口。 只需这样称呼它:
anyInterfaceName.startAnotherActivity();
这可能是一项漫长的工作,但对于最佳实践而言,确实如此。
从Android官方网站与活动沟通看看这里
希望能帮助到你 !!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.