Java android.util.AndroidRuntimeException:从活动外部调用startActivity()

Java android.util.AndroidRuntimeException:从活动外部调用startActivity(),java,android,android-studio,onclick,Java,Android,Android Studio,Onclick,检查我的代码下方,。此代码在我的适配器中。但问题是,我的手机完全支持应用程序和共享,但较低版本的手机不支持在单击共享时强制关闭。 share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String shareBody = "\t\t DIL KI BAAT \n\n" +sayari[positio

检查我的代码下方,。此代码在我的适配器中。但问题是,我的手机完全支持应用程序和共享,但较低版本的手机不支持在单击共享时强制关闭。

 share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String shareBody = "\t\t DIL KI BAAT \n\n" +sayari[position].toString().trim()+"\n\n\n"+ "https://play.google.com/store/apps/details?id="
                    + appPackageName;

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            sharingIntent.setType("text/plain");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            context.startActivity(Intent.createChooser(sharingIntent, context.getResources()
                    .getString(R.string.app_name)));
        }
    });

在调用startActivity之前执行此操作


sharingcontent.setFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)。如果不使用活动上下文,则需要执行此操作。

在调用startActivity之前执行此操作


sharingcontent.setFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)。如果不使用“活动”上下文,则需要添加此标志。

您需要添加此标志,而不是为了共享目的,而是为了启动“活动”的目的:

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

Intent startIntent = Intent.createChooser(sharingIntent, context.getResources().getString(R.string.app_name));
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);

您需要添加此标志不是为了共享目的,而是为了开始活动的目的:

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

Intent startIntent = Intent.createChooser(sharingIntent, context.getResources().getString(R.string.app_name));
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);

解决此问题的最佳方法是从适配器父活动开始活动。使用上下文对象或使用接口,将它们作为参数传递给适配器的构造函数。使用传递的引用在活动中调用方法。以下是一个例子:

创建一个接口:

public interface ActivityInteractor{
    public void showDetails();
}
让你的活动激发它:

public class MyActivity extends Activity implements ActivityInteractor{
    public void showDetails(){
        //do stuff
    }
}
然后将您的活动传递给ListAdater:

公共MyAdapter扩展BaseAdater{ 私人活动交互听者

public MyAdapter(ActivityInteractor listener){
    this.listener = listener;
}
} 在适配器中的某个位置,当您需要调用该活动方法时:

listener.showDetails();

解决此问题的最佳方法是从适配器父活动开始活动。使用上下文对象或使用接口,将它们作为参数传递给适配器的构造函数。使用传递的引用在活动中调用方法。以下是一个例子:

创建一个接口:

public interface ActivityInteractor{
    public void showDetails();
}
让你的活动激发它:

public class MyActivity extends Activity implements ActivityInteractor{
    public void showDetails(){
        //do stuff
    }
}
然后将您的活动传递给ListAdater:

公共MyAdapter扩展BaseAdater{ 私人活动交互听者

public MyAdapter(ActivityInteractor listener){
    this.listener = listener;
}
} 在适配器中的某个位置,当您需要调用该活动方法时:

listener.showDetails();

post your adapter Code可能重复我的错误是这个android.util.AndroidRuntimeException:从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志。这真的是你想要的吗?@sasikumar但是letest手机已经在这个代码中工作了,而不是在低版本的小型android手机中工作了?
从活动上下文之外调用startActivity()需要标记“活动”新任务标记
你没有尝试在谷歌中搜索这个错误消息,是吗?post适配器代码可能重复我的错误是这个android.util.AndroidRuntimeException:从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志。这真的是你想要的吗?@sasikumar但是letest手机已经在这个代码中工作了,而不是在小型android手机的较低版本中工作了?
从活动上下文之外调用startActivity()需要标志“活动”新任务标志
你没有尝试在谷歌中搜索这个错误消息,是吗?完成了,谢谢,谢谢