我收到错误AndroidRuntimeException:从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志
。完整堆栈跟踪:
main Process: com.kd.book, PID: 3487 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? at android.app.ContextImpl.startActivity(ContextImpl.java:1238) at android.app.ContextImpl.startActivity(ContextImpl.java:1225) at com.kd.book.Adapter.MyComicAdapter$1.onClick(MyComicAdapter.java:63) at com.kd.book.Adapter.MyComicAdapter$MyViewHolder.onClick(MyComicAdapter.java:99)
我是Android开发新手,不知道如何解决它。
我的代码:
public class MyComicAdapter extends RecyclerView.Adapter<MyComicAdapter.MyViewHolder> {
Context context;
List<Comic> comicList;
LayoutInflater inflater;
public MyComicAdapter(Context context, List<Comic> comicList) {
this.context = context;
this.comicList = comicList;
inflater=LayoutInflater.from(context);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = inflater.inflate(R.layout.comic_item, viewGroup, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
Picasso.get().load(comicList.get(i).Image).into(myViewHolder.comic_image);
myViewHolder.comic_name.setText(comicList.get(i).Name);
//Event
myViewHolder.setRecyclerItemClickListener(new IRecyclerItemClickListener(){
@Override
public void onClick(View view, int position) {
//save the comic selected
Common.comicSelected = comicList.get(position);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(new Intent(context,ChapterActivity.class));
}
});
}
@Override
public int getItemCount() {
return comicList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView comic_name;
ImageView comic_image;
IRecyclerItemClickListener recyclerItemClickListener;
public void setRecyclerItemClickListener(IRecyclerItemClickListener recyclerItemClickListener) {
this.recyclerItemClickListener = recyclerItemClickListener;
}
public MyViewHolder(@NonNull View itemView) {
super(itemView);
comic_image = itemView.findViewById(R.id.image_comic);
comic_name = itemView.findViewById(R.id.comic_name);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
recyclerItemClickListener.onClick(view, getAdapterPosition());
}
}
}
有什么想法吗?
问题是你正在做两次“新意图”:
Intent Intent=新的Intent(Intent.ACTION_视图)
活动启动时未设置标志\活动\新任务。仅创建一次意图的更正版本如下所示:
Intent intent = new Intent(context, ChapterActivity.class))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
但你真正的问题是,你需要在活动上下文中调用startActivity。
getActivity().startActivity(new Intent(getActivity(), ChapterActivity.class));
这里有更多的讨论:如何从片段中开始活动?
您尝试对FLAG_ACTIVITY_NEW_TASK所做的操作应该保留在罕见的情况下,例如当您需要从服务启动活动时。但从UI上下文中启动活动时,没有必要或不希望设置该标志。
这就是为什么警告会问:
这真的是你想要的吗?
在启动活动时设置专门的标志通常会导致不必要的后台/导航行为。
此外,我无法看到您的适配器是否位于活动或片段中。[您可以在Aciality中使用this,并在片段中使用getActive()]
最后,我不知道您是如何创建适配器的,但是您的代码当前的组织方式需要将活动上下文传递到适配器中,才能使其工作。从一个片段:
adapter = new MyComicAdapter(getActivity(), list);
从活动中:
adapter = new MyComicAdapter(this, list);
这很可能会防止您遇到异常。
将您的呼叫更改为新活动,如下所示:,
Intent intent=new Intent(context, ChapterActivity.class);
Activity activity=(Activity) context;
activity.startActivity(intent);
这样试试,
1。在适配器中创建一个接口,并将位置传递给它(希望您知道如何制作和使用接口)
2。将该接口实现到活动类中
3。在其覆盖方法中,您将获得列表的位置
4。通过使用该位置,获取所需数据并在其中调用意图<好了。
Logcat按摩 **从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志。这真的是你想要的吗?
我已经创建了一个摄像头活动,可以从前后摄像头拍摄照片。但我一直在犯上述错误,有人能帮我吗 似乎我做了一些错误在Menifeste文件中调用意图,但无法弄清楚我在做什么错误。 这是我的摄影活动。JAVA
我在listview中创建了多个布局,但是当我单击时,我得到了一个Android RuntimeExc0019”从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?" 我在补充 意图。FLAG_ACTIVITY_NEW_TASK 我的意图,但我得到同样的信息!=(
我想从服务类中通过期权打开股票。它在Android7中运行良好,但在8操作系统中开始显示 android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 我也将此标志包含到我的意图中,但它仍然显示相同的错误。 有没有其他方式可以通过期权从服务类中公开股票?
Android的bug reporting工具告诉我,在这个错误下,我在60个不同的地方发生了60次不同的崩溃: “致命异常android.util.AndroidRuntimeException从活动上下文外部调用startActivity(),需要标志_Activity_NEW_TASK标志。这真的是您想要的吗?” 此外,我通过这种方式从服务向主要活动发送消息: 我从未亲自复制过这次坠机。 我
问题内容: 我在Android的新的,试图通过一个适配器去到下一个活动,我使用同一个,下面是代码: 这是随之而来的错误: 我尝试了此解决方案,但“下一个活动”不会返回到上一个活动。 我的解决方案:(但是没有用) 以下是完整的适配器代码: 问题答案: 在你传递到构造函数应该是万军此。然后,您将不会收到此错误。