我的ArrayAdapter中有一个TextVIEw,其中可能包含一些超链接.对于这些链接,我使用linkify:
public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { VIEw rowVIEw = convertVIEw; if (rowVIEw == null) { rowVIEw = inflater.inflate(R.layout.List_item_2, null); holder = new VIEwHolder(); holder.content = (TextVIEw) rowVIEw.findVIEwByID(R.ID.postContent); holder.date = (TextVIEw) rowVIEw.findVIEwByID(R.ID.postDate); rowVIEw.setTag(holder); } else { holder = (VIEwHolder) rowVIEw.getTag(); } holder.content.setText(contents.get(position)); holder.date.setText(dates.get(position)); linkify.addlinks(holder.content, linkify.ALL); return rowVIEw;}
但是因为linkify是添加在ArrayAdapter中的,所以我得到了一个例外:
08-05 16:42:16.715: E/AndroIDRuntime(20598): FATAL EXCEPTION: main08-05 16:42:16.715: E/AndroIDRuntime(20598): androID.util.AndroIDRuntimeException: Calling startActivity() from outsIDe of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?08-05 16:42:16.715: E/AndroIDRuntime(20598): at androID.app.ContextImpl.startActivity(ContextImpl.java:921)08-05 16:42:16.715: E/AndroIDRuntime(20598): at androID.content.Contextwrapper.startActivity(Contextwrapper.java:283)08-05 16:42:16.715: E/AndroIDRuntime(20598): at androID.text.style.URLSpan.onClick(URLSpan.java:62)
我该如何进行这项工作?我想不出另一种选择.
解决方法:
查看日志中的异常,似乎在分配ArrayAdapter时使用了应用程序上下文.例如,如果您的代码类似于以下内容:
ListVIEw.setAdapter(new ArrayAdapter<String>(context, androID.R.layout.simple_List_item_1, data) { @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { // ... } });
您必须使用应用程序上下文初始化了上面的context变量,如下所示:
Context context = getApplicationContext();
为避免该错误,您应该使用Activity实例对其进行初始化:
Context context = this;
或者,如果您的代码在Fragment中:
Context context = getActivity();
总结 以上是内存溢出为你收集整理的android-在ListView的ArrayAdapter中使用Linkify会导致RuntimeException全部内容,希望文章能够帮你解决android-在ListView的ArrayAdapter中使用Linkify会导致RuntimeException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)