0

我正在学习Grant Klimaytys的在线课程,内容是关于 Android Studio 的技能分享,以及如何从头开始设置一个简单的 RSS 提要应用程序. 好吧,我已经到了他在 github 上集成了 Salendron 的 Simple Rss2 Android jar 的地步。我已经按照他的指示将 jar 添加为我的应用程序的库以及将示例代码复制并粘贴到我的主要 activity.java 文件中的正确位置但是当我去运行调试时我是没有看到他在教程中的 log.d 输出。我进行了广泛的搜索,没有任何其他人在谈论有同样的问题。我试图尽可能地坚持本教程,但我担心由于它已有 2 年历史,可能存在一些我不知道的不兼容性。

无论如何,这是我的MainActivity.java中的代码

package com.katsthings.personalrssfeed;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import java.util.List;

import at.theengine.android.simple_rss2_android.RSSItem;
import at.theengine.android.simple_rss2_android.SimpleRss2Parser;
import at.theengine.android.simple_rss2_android.SimpleRss2ParserCallback;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Intent intent = new Intent(fab.getContext(), AddFeedActivity.class);
           startActivity(intent);

        }
    });
    SimpleRss2Parser parser = new SimpleRss2Parser("http://pingeb.org/feed",
            new SimpleRss2ParserCallback() {
                @Override
                public void onFeedParsed(List<RSSItem> items) {
                    for(int i = 0; i < items.size(); i++){
                        Log.d("SimpleRss2ParserDemo",items.get(i).getTitle());
                    }
                }
                @Override
                public void onError(Exception ex) {
                   // Toast.makeText(mContext, ex.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    parser.parseAsync();
}

在 logcat 中,我应该看到 D/SimpleRss2ParseDemo,但不幸的是我没有。

4

1 回答 1

0

您可能会抛出异常,但是因为您在 onError() 方法中注释掉了 Toast,所以您什么也看不到。

我发现这个库不能很好地处理 HTTP->HTTPS 重定向。当我在演示程序中使用位于http://pingeb.org/feed的示例 RSS 提要时,由于输入流为空,它抛出了 RuntimeException。

当我将 URL 扔进浏览器时,我看到它被重定向到网站的 HTTPS 版本。我将代码中的 URL 更改为https://pingeb.org/feed ",一切正常。

SimpleRss2Parser parser = new SimpleRss2Parser("https://pingeb.org/feed",
        new SimpleRss2ParserCallback() {
            @Override
            public void onFeedParsed(List<RSSItem> items) {
                for(int i = 0; i < items.size(); i++){
                    Log.d("SimpleRss2ParserDemo",items.get(i).getTitle());
                }
            }
            @Override
            public void onError(Exception ex) {
               Toast.makeText(mContext, ex.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
parser.parseAsync();
于 2018-11-03T16:32:34.130 回答