我已经在我的Android应用程序中实现了ListView 。 我使用ArrayAdapter类的自定义子类绑定到此ListView 。 在重写的ArrayAdapter.getView(...)方法内部,我分配了一个OnClickListener 。 我想在OnClickListener的onClick方法中启动一个新活动。 我得到例外:
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);
适配器在两种情况下均能正常工作,但链接仅在最后一种情况下有效。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3189248