启动Activity时出现java.lang.reflect.InvocationTargetException

时间:2016-09-05 00:09:53

标签: android android-intent custom-adapter getview

这是我的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;
}

在这里,我试图通过我的上下文启动活动,因为我在一个不在活动中的cutomized适配器类,但它给了我这个错误标题:

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)); 在它显示此异常之后。

任何人都可以告诉我这个例外所指的是什么,你的援助是完全的,并且分别受到赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您的mContext变量不是Activity - 您可能正在使用getApplicationContext()创建mContext

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

答案 1 :(得分:0)

不知道你的mContext是什么。但您始终可以从import multiprocessing def do_calc(data): # access num or # work to update arr newdata =data * 2 return newdata def start_process(): print 'Starting', multiprocessing.current_process().name if __name__ == '__main__': num = Value('d', 0.0) arr = Array('i', range(10)) inputs = list(range(10)) print 'Input :', inputs pool_size = multiprocessing.cpu_count() * 2 pool = multiprocessing.Pool(processes=pool_size,initializer=start_process, ) pool_outputs = pool.map(do_calc, inputs) pool.close() # no more tasks pool.join() # wrap up current tasks print 'Pool :', pool_outputs 获取适当的背景信息。你的意图也很奇怪。它应该与parent.getContext()崩溃。

Intent标志应该像这样使用:

ActivityNotFoundException: No Activity found to handle Intent

答案 2 :(得分:0)

这是我现在的意图代码块,它正在运行

Main Thread