语境希望FLAG_ACTIVITY_NEW_TASK但我已经设置该标志(Context wants

2019-07-18 17:59发布

我创建了一个常见的可重用类的公司为我创造了一些常见的界面元素。

类,需要在一个单一的参数作为在构建体:应用上下文。

的方法之一, ContentClickableRowWithIcon让您在意图传递给被用作点击动作。

继承人的完整方法声明:

public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, Intent i, final Boolean chooser)

去年属性有在onClickEvent用来确定是否调用选配或者只是去直接进入的意图。

public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, Intent i, final Boolean chooser) {

    LinearLayout ll = new LinearLayout(mContext);

    // ..  LinerLayout construction, has nothing to do with the action

    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this is apparently getting ignored... (ps: i've tried i.setFlags as well)

    final Intent intent = i;

    ll.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            if(chooser)
                mContext.startActivity(Intent.createChooser(intent, "Complete With...")); // crashes here with: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
            else
                mContext.startActivity(intent); // this works fine

        }
    });

    return ll;
}

正如在评论中提到的,只要我不提供使用一个选择器的能力,一切工作正常(一切都在这个名单得到了新的有效标志,即时通讯深知这一点,并清理时,这个问题想通了)

我做的那一刻,抛出该异常: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

我已经江郎才尽了?

/// ::编辑值得注意的,在调试,标志在Intent属性设置为268435456与addFlags和268435456用setFlags,当达到使用目的在onclick行动的时候了

Answer 1:

问题已经解决,我觉得这是一个简单的“操作顺序”判断的情况下,

继承人什么让这件事的工作:

    ll.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {



            if(chooser) {
                Intent intent = Intent.createChooser(i, "Complete With");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(intent);
            } else
                mContext.startActivity(i);

        }
    });

同样在方法声明添加了“最终”改性剂对参数

public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, final Intent i, final Boolean chooser)


Answer 2:

其实你的异常意味着你使用的是不活动上下文。 它可以从应用程序上下文中调用。 检查是否在活动范围内,因为这不是一个服务



文章来源: Context wants FLAG_ACTIVITY_NEW_TASK but I've already set that flag