Android 使用SimpleAdapter时,单击URL会导致ListView中的强制关闭错误

Android 使用SimpleAdapter时,单击URL会导致ListView中的强制关闭错误,android,android-layout,android-intent,Android,Android Layout,Android Intent,我是安卓的乞丐。很快我要做的就是使用SimpleAdapter显示一个web URL列表以供练习。 但是,当我单击URL时,会导致forceclose错误。 日志显示 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you w

我是安卓的乞丐。很快我要做的就是使用SimpleAdapter显示一个web URL列表以供练习。 但是,当我单击URL时,会导致forceclose错误。 日志显示

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
我已经发现了有关此类异常的一些类似问题。一种可能的解决方案是在调用startActivity方法之前添加标志。例如:

intent.addFlag(FLAG_ACTIVITY_NEW_TASK);
不幸的是,系统会自动响应web URL的单击事件。 那么,在我的案例中,我如何解决这个问题呢? 有人能解释为什么在使用simpleAdapter而不是ArrayAdapter时会出现此问题吗

以下是主要代码:

public class RSSContentActivity extends ListActivity
{
private SimpleAdapter   simpleAdapter;
private ListView        lv;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);


    lv = getListView();
    simpleAdapter = new SimpleAdapter(getApplicationContext(), getData(),
            R.layout.rss_content_item, new String[]
            {"item_link" }, new int[]
            {R.id.rss_item_content});
    lv.setAdapter(simpleAdapter);

}

private List<Map<String, Object>> getData()
{

    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

    Map<String, Object> map = new HashMap<String, Object>();
        map.put("item_link",
            "http://www.bom.gov.au/vic/warnings/coastalwind.shtml");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("item_link",
            "http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDV36050.html");
    list.add(map);

    map = new HashMap<String, Object>();
        map.put("item_link", "http://www.bom.gov.au/products/IDY21000.shtml");
    list.add(map);

    return list;
}
}
公共类rsscontectivity扩展了ListActivity
{
私人simpledapter simpledapter;
私有ListView lv;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
lv=getListView();
simpleAdapter=新的simpleAdapter(getApplicationContext(),getData(),
R.layout.rss_内容_项,新字符串[]
{“item_link”},新int[]
{R.id.rss_item_content});
低压设置适配器(simpleAdapter);
}
私有列表getData()
{
列表=新的ArrayList();
Map Map=newhashmap();
map.put(“项目链接”,
"http://www.bom.gov.au/vic/warnings/coastalwind.shtml");
列表。添加(地图);
map=新的HashMap();
map.put(“项目链接”,
"http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDV36050.html");
列表。添加(地图);
map=新的HashMap();
地图放置(“项目链接”http://www.bom.gov.au/products/IDY21000.shtml");
列表。添加(地图);
退货清单;
}
}
以下是rss_item_content.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rss_item_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:autoLink="web"
android:padding="10dp"
android:textAppearance="?android:attr/textAppearanceMedium"  >
</TextView>

最终,我自己解决了这个问题。我的想法是,不要让系统处理链接,而是手动完成整个过程。 以下是解决方案:

首先,删除布局文件中的“自动链接”属性

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rss_item_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textAppearance="?android:attr/textAppearanceMedium"  >
</TextView>

然而,我仍然想知道为什么会出现这个问题。有人有什么想法吗?

最终,我自己解决了这个问题。我的想法是,不要让系统处理链接,而是手动完成整个过程。 以下是解决方案:

首先,删除布局文件中的“自动链接”属性

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rss_item_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textAppearance="?android:attr/textAppearanceMedium"  >
</TextView>
然而,我仍然想知道为什么会出现这个问题。有人有什么想法吗?

试试:

simpleAdapter = new SimpleAdapter(this, ...

getApplicationContext() -> this
尝试:


你能解释一下吗?目前你的答案不完整。你能解释一下吗?目前你的答案不完整。
simpleAdapter = new SimpleAdapter(this, ...

getApplicationContext() -> this