java - 上下文需要 FLAG_ACTIVITY_NEW_TASK 但我已经设置了该标志

标签 java android android-intent android-sdk-2.3

我为我工作的公司创建了一个通用的可重用类,用于创建一些通用的界面元素。

该类在构造中采用单个参数:应用程序上下文。

方法之一,ContentClickableRowWithIcon 允许您传入一个用作点击操作的 Intent 。

这里是完整的方法声明:

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

最后一个属性在 onClickEvent 中用于确定是调用选择器还是直接进入 Intent 。

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;
}

如评论中所述,任何时候我不提供使用选择器的能力时,一切正常(此列表中的所有内容都有一个新的 Activity 标志,我很清楚这一点,并会在解决此问题后进行清理)

我这样做的那一刻,抛出异常: android.util.AndroidRuntimeException:从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

我的想法已经用完了......

///EDIT::值得注意的是,在调试时,Intent 中的标志属性设置为 268435456 with addFlags 和 268435456 with setFlags,当它到达是时候在 onClick Action 中使用 Intent 了

最佳答案

问题已经解决,我认为这只是“操作顺序”场景的情况

这是让这个东西起作用的原因:

    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);

        }
    });

还在方法声明中为参数添加了“final”修饰符

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

关于java - 上下文需要 FLAG_ACTIVITY_NEW_TASK 但我已经设置了该标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14529492/

相关文章:

android - 如何在android中合并线性布局和表格布局?

android - 如何检测用户是否在 Intent.ACTION_DELETE 上单击了“确定”或“取消”?

Java WebStart 慢,从无效文件夹请求库

java - 当单击 RecyclerView 中的一行中的某个按钮时,如何从 Activity 类中检测?

android - 无法在gitlab中建立提交(gradle)

android - 如何使用相机 Action Intent 在保存时减小相机图片的大小?

android - startActivityForResult() 不适用于外部 Activity

java - 在 JTree 中的行之间添加垂直填充/空间?

java - 如何使用 iText 获取 Pdf 表单字段的自定义格式脚本?

android - 更改升级时的默认首选项