java.lang.reflect.InvocationTargetException 开始时出现 Activity

java.lang.reflect.InvocationTargetException appears while starting Activity

这是我的 ListView 自定义适配器中的一段代码:

@Override
public View getView(int i, View convertView, ViewGroup parent) {
    final MovieEntity feedItem=feedTrailersList.get(i);

    //LinearLayout Trailers_Linear=(LinearLayout) convertView.findViewById(R.id.Trailers_Linear);

    View view=convertView;
    if (view==null){
        view=LayoutInflater.from(getContext()).inflate(R.layout.trailer_list_item, parent,false);
    }
    TextView trailerName=(TextView)view.findViewById(R.id.trailer_name);
    trailerName.setText(feedItem.getTRAILER_NAME_STRING());
    trailerName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(String.valueOf(Intent.FLAG_ACTIVITY_NEW_TASK));
            intent.setData(Uri.parse(feedItem.getTRAILER_KEY_STRING()));
            mContext.startActivity(intent);

        }
    });
 return view;
}

在这里,我试图通过我的上下文启动 Activity,因为我在自定义适配器 class 中而不是 activity 中,但它给了我这个错误标题:

ex: java.lang.reflect.InvocationTargetException
cause : 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 intent=new Intent(Intent.ACTION_VIEW); 标志,并尝试了 Intent intent=new Intent(String.valueOf(Intent.FLAG_ACTIVITY_NEW_TASK)); 在它显示此异常之后。

任何人都可以告诉我这个异常是指什么,你的帮助是完全的,并分别表示感谢。提前致谢。

您的 mContext 变量不是 Activity - 也许您正在使用 getApplicationContext() 创建 mContext.

在任何情况下,根本不需要 Context 变量 - 您可以随时使用 getContext() 来检索当前的 Context.

不知道你的mContext是什么。但是您始终可以从 parent.getContext() 中获取适当的上下文。你的意图看起来也很奇怪。它应该与 ActivityNotFoundException: No Activity found to handle Intent 一起崩溃。

意图标志应该像这样使用:

Inten intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
...

这是我当前的 Intent 代码块,它正在运行

Intent intent=new Intent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     
intent.setData(Uri.parse(feedItem.getTRAILER_KEY_STRING())); 
getContext().startActivity(intent);