我已经在我的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(当前活动)正在工作的上下文?
另外:如果你在listview中以片段的形式显示链接,不要这样创建它
adapter = new ListAdapter(getActivity().getApplicationContext(),mStrings);
而不是打电话
adapter = new ListAdapter(getActivity(),mStrings);
适配器在这两种情况下都工作得很好,但链接只在最后一种情况下工作。
我的情况有点不同,我正在使用Espresso测试我的应用程序,我必须从仪器环境中启动我的活动与ActivityTestRule(这不是一个来自活动)。
fun intent(context: Context) =
Intent(context, HomeActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
我不得不改变标志,并添加一个或位(在Java中|)与意图。FLAG_ACTIVITY_NEW_TASK
结果是:
fun intent(context: Context) =
Intent(context, HomeActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)