从Activity上下文外部调用startActivity()

半世苍凉 提交于 2020-03-06 21:53:27

我已经在我的Android应用程序中实现了ListView 。 我使用ArrayAdapter类的自定义子类绑定到此ListView 。 在重写的ArrayAdapter.getView(...)方法内部,我分配了一个OnClickListener 。 我想在OnClickListeneronClick方法中启动一个新活动。 我得到例外:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

如何获取ListView (当前Activity )在其下工作的Context


#1楼

您可以使用addFlags代替setFlags来实现

myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

根据文档,它可以:

向意图添加其他标志(或使用现有标志值)。


编辑

请注意,如果您使用的标志会更改历史记录堆栈,如Alex Volovoy的回答所述

...避免设置标志,因为它会干扰事件和历史记录堆栈的正常流程。


#2楼

对于即使在活动中调用StartActivity的情况下,也可以在Xamarin.Android(MonoDroid)上获得此权限的人-这实际上是具有新ART运行时的Xamarin错误,请参阅https://bugzilla.xamarin.com/show_bug.cgi?id=17630


#3楼

CustomAdapter mAdapter = new CustomAdapter( getApplicationContext(), yourlist);

要么

Context mContext = getAppliactionContext();
CustomAdapter mAdapter = new CustomAdapter( mContext, yourlist);

转到下面

CustomAdapter mAdapter = new CustomAdapter( this, yourlist);

#4楼

我认为,最好在Activity.class的代码中使用startActivity()方法。 如果在Adapter或其他类中使用它,则会导致这种情况。


#5楼

另外:如果您在片段视图的列表视图中显示链接,请不要这样创建链接

adapter = new ListAdapter(getActivity().getApplicationContext(),mStrings);

代替打电话

adapter = new ListAdapter(getActivity(),mStrings);

适配器在两种情况下均能正常工作,但链接仅在最后一种情况下有效。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!