在自定义微调器中共享FLAG_ACTIVITY_NEW_TASK标志错误

时间:2014-04-25 20:05:10

标签: android

我想在自定义微调器中使用共享按钮

这是我的代码:

btnShareCS_One.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // Share
        // Share Selected Item In Cell-Phone
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = txtTitleCS_One.getText().toString() + ": " + edtContentCS_One.getText().toString();
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, txtTitleCS_One.getText().toString());
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
// sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getContext().startActivity(Intent.createChooser(sharingIntent, "Share via"));
    }
});

但不行 错误:

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

如何修复它?

我的自定义微调器正常工作,代码正常工作但不在自定义微调器中

我试图使用:

                getContext().startActivity(Intent.createChooser(sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), "Share via"));

因此它也不起作用

4 个答案:

答案 0 :(得分:2)

使用它

            // Share Selected Item In Cell-Phone
            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.setType("text/plain");
            String shareBody = note.title + ":" + "\n" + note.detail;
            // sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, note.title + ":");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            G.currentActivity.startActivity(Intent.createChooser(sharingIntent, "اشتراک با..."));

和     G.currentActivity

G

Global Class是否扩展了应用程序和

currentActivity

是静态变量来自活动

答案 1 :(得分:1)

您只需取消注释该行

即可

sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

您遇到此问题是因为您在没有标记FLAG_ACTIVITY_NEW_TASK的情况下从活动外部调用方法 startActivity()

答案 2 :(得分:1)

每当你使用来自非Activity类的Intent时,需要添加下面提到的行来表示我们正在调用非活动的Activity

<强> sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

由于

答案 3 :(得分:0)

Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND);
            intent.setType("text/plain");

            String textMessage = "Text Of Message";
            intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
            intent.putExtra(Intent.EXTRA_TEXT, textMessage);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.getApplicationContext().startActivity(intent);