2015-10-29 89 views
-3

我正在尝试从xml文件创建RSS阅读器。Android Studio:使用xml的RSS阅读器

我的大部分代码是建立关闭此模板:http://www.tutorialspoint.com/android/android_rss_reader.htm

我修改了代码为我的总体目标。目标是在基于Web的移动应用程序中创建RSS源。

问题是应用程序无法正确拉动RSS源。我收到一条声明,称您的网址无法找到。

任何帮助,非常感谢。

活动主要

<TextView android:text="RSS example" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textview" 
    android:textSize="35dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 


<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:layout_below="@+id/textview" 
    android:hint="Link" 
    android:textColorHint="#ff69ff0e" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 


<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Result" 
    android:id="@+id/button2" 

    android:layout_alignRight="@+id/editText" 
    android:layout_alignEnd="@+id/editText" /> 

次活动

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<WebView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/webView" 
    android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

的Java二

public class second extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    WebView w1=(WebView)findViewById(R.id.webView); 
    w1.loadUrl("http://www.franklinpierce.edu/news.xml"); 
} 

主要活动的Java:

public class MainActivity extends Activity { 
EditText title,link,description; 
Button b1,b2; 
private String finalUrl="rss feed url"; 
private HandleXML obj; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    link = (EditText) findViewById(R.id.editText); 

    b2=(Button)findViewById(R.id.button2); 


    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent in=new Intent(MainActivity.this,second.class); 
      startActivity(in); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 


    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

RSSReader

public class RSSReader { 
private String link = "link"; 
private String urlString = null; 
private XmlPullParserFactory xmlFactoryObject; 
public volatile boolean parsingComplete = true; 

public HandleXML(String url){ 
    this.urlString = url; 
} 


public String getLink(){ 
    return link; 
} 


public void parseXMLAndStoreIt(XmlPullParser myParser) { 
    int event; 
    String text=null; 

    try { 
     event = myParser.getEventType(); 

     while (event != XmlPullParser.END_DOCUMENT) { 
      String name=myParser.getName(); 

      switch (event){ 
       case XmlPullParser.START_TAG: 
        break; 

       case XmlPullParser.TEXT: 
        text = myParser.getText(); 
        break; 

       case XmlPullParser.END_TAG: 

        if(name.equals("link")){ 
         link = text; 
        } 


        else{ 
        } 

        break; 
      } 

      event = myParser.next(); 
     } 

     parsingComplete = false; 
    } 

    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public void fetchXML(){ 
    Thread thread = new Thread(new Runnable(){ 
     @Override 
     public void run() { 

      try { 
       URL url = new URL(urlString); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

       conn.setReadTimeout(10000 /* milliseconds */); 
       conn.setConnectTimeout(15000 /* milliseconds */); 
       conn.setRequestMethod("GET"); 
       conn.setDoInput(true); 

       // Starts the query 
       conn.connect(); 
       InputStream stream = conn.getInputStream(); 

       xmlFactoryObject = XmlPullParserFactory.newInstance(); 
       XmlPullParser myparser = xmlFactoryObject.newPullParser(); 

       myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); 
       myparser.setInput(stream, null); 

       parseXMLAndStoreIt(myparser); 
       stream.close(); 
      } 

      catch (Exception e) { 
      } 
     } 
    }); 
    thread.start(); 
} 
+0

有什么问题? –

+0

问题是我无法让rss提要正常工作,所以错误不断出现。 –

+0

你的代码似乎只是加载到web视图的XML?你在哪里使用RSSReader类? –

回答

0

您需要通过它传递给HandleXML设置URL在RSSReader类,然后你必须把它拿来。

您将不得不弄清楚如何显示信息。将网址加载到网页视图中甚至不会远离您想要做的事情。