如果站点不可用,Android应用程序将崩溃

如果站点不可用,Android应用程序将崩溃,android,crash,Android,Crash,如果网站不可用,我的应用程序将崩溃。如何修复它 Intent FirstIntent = new Intent().setClass(this, RssChannelActivity.class); FirstIntent.putExtra("rss-url", "http://rss-link"); String FirstTabName = getResources().getString(R.string.tab_1); TabSpec FirstTabS

如果网站不可用,我的应用程序将崩溃。如何修复它

Intent FirstIntent = new Intent().setClass(this, RssChannelActivity.class);
    FirstIntent.putExtra("rss-url", "http://rss-link");
    String FirstTabName = getResources().getString(R.string.tab_1);     
    TabSpec FirstTabSpec = tabHost.newTabSpec(FirstTabName)
                .setIndicator(FirstTabName, getResources().getDrawable(R.drawable.rss_tab_1))
                .setContent(FirstIntent);
    tabHost.addTab(FirstTabSpec);
异步任务:

    @Override
    protected List<RssItem> doInBackground(String... urls) {
        try {
            // Create RSS reader
            RssReader rssReader = new RssReader(urls[0]);

            // Parse RSS, get items
            return rssReader.getItems();

        } catch (Exception e) {
            Log.e("RssChannelActivity", e.getMessage());
        }

        return null;
    }

    @Override
    protected void onPostExecute(List<RssItem> result) {

        // Get a ListView from the RSS Channel view
        ListView itcItems = (ListView) findViewById(R.id.rssChannelListView);

        // Create a list adapter
        ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(local,android.R.layout.simple_list_item_1, result);
        // Set list adapter for the ListView
        itcItems.setAdapter(adapter);

        // Set list view item click listener
        itcItems.setOnItemClickListener(new ListListener(result, local));
    }

您需要在
onPostExecute()
中验证结果是否为空。最好先检查这样的变量是否已初始化,然后再使用它们来防止出现
NullPointerException

@Override
protected void onPostExecute(List<RssItem> result) {

    if (result == null) {
        // Do something when no result is found
        return;
    }

    // Get a ListView from the RSS Channel view
    ListView itcItems = (ListView) findViewById(R.id.rssChannelListView);

    // Create a list adapter
    ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(local,android.R.layout.simple_list_item_1, result);
    // Set list adapter for the ListView
    itcItems.setAdapter(adapter);

    // Set list view item click listener
    itcItems.setOnItemClickListener(new ListListener(result, local));
}
@覆盖
受保护的void onPostExecute(列表结果){
如果(结果==null){
//找不到结果时做点什么
回来
}
//从RSS频道视图获取列表视图
ListView itcItems=(ListView)findViewById(R.id.rssChannelListView);
//创建一个列表适配器
ArrayAdapter=新的ArrayAdapter(local,android.R.layout.simple\u list\u item\u 1,result);
//为ListView设置列表适配器
设置适配器(适配器);
//设置列表视图项单击侦听器
setOnItemClickListener(新的ListListener(结果,本地));
}

然后发布日志。现在发布您的
RssChannelActivity
code。@SimplePlan签入post方法,如adapter.getCount()大于零?onPostExecute。。。例如?请参阅我的编辑。当适配器为空时,您正在适配器中使用
result
。在尝试引用它之前,需要首先检查它是否为null。
@Override
protected void onPostExecute(List<RssItem> result) {

    if (result == null) {
        // Do something when no result is found
        return;
    }

    // Get a ListView from the RSS Channel view
    ListView itcItems = (ListView) findViewById(R.id.rssChannelListView);

    // Create a list adapter
    ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(local,android.R.layout.simple_list_item_1, result);
    // Set list adapter for the ListView
    itcItems.setAdapter(adapter);

    // Set list view item click listener
    itcItems.setOnItemClickListener(new ListListener(result, local));
}