2011-10-25 11 views
0

リストアイテムをクリックすると、詳細ビ​​ューに切り替わるRSSリーダーが構築されました。新しいビューを開く際に問題が発生しています。私のコードはここにある:あなたのonItemClickメソッドの最後にstartActivity(itemintent)を呼び出す必要がAndroidスイッチのビュー

package com.CalvaryChapelMelbourne.feedparser; 


import android.app.Activity; 
import android.os.Bundle; 
import android.view.*; 
import android.widget.TextView; 
import android.widget.ListView; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.AdapterView.OnItemClickListener; 
import android.util.Log; 

import java.io.PrintWriter; 
import java.io.StringWriter; 
import java.net.URL; 

import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.InputSource; 

import org.xml.sax.XMLReader; 

import android.content.Intent; 

import com.CalvaryChapelMelbourne.feedparser.ShowDescription; 

public class RSSReader extends Activity implements OnItemClickListener 
{ 

public final String RSSFEEDOFCHOICE = "http://app.calvaryccm.com/mobile/android/v1/devos"; 

public final String tag = "RSSReader"; 
private RSSFeed feed = null; 

/** Called when the activity is first created. */ 

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    // go get our feed! 
    feed = getFeed(RSSFEEDOFCHOICE); 

    // display UI 
    UpdateDisplay(); 

} 


private RSSFeed getFeed(String urlToRssFeed) 
{ 
    try 
    { 
     // setup the url 
     URL url = new URL(urlToRssFeed); 

     // create the factory 
     SAXParserFactory factory = SAXParserFactory.newInstance(); 
     // create a parser 
     SAXParser parser = factory.newSAXParser(); 

     // create the reader (scanner) 
     XMLReader xmlreader = parser.getXMLReader(); 
     // instantiate our handler 
     RSSHandler theRssHandler = new RSSHandler(); 
     // assign our handler 
     xmlreader.setContentHandler(theRssHandler); 
     // get our data via the url class 
     InputSource is = new InputSource(url.openStream()); 
     // perform the synchronous parse   
     xmlreader.parse(is); 
     // get the results - should be a fully populated RSSFeed instance, or null on error 
     return theRssHandler.getFeed(); 
    } 
    catch (Exception ee) 
    { 
     // if we have a problem, simply return null 
     System.out.println(ee.getMessage()); 
     System.out.println(ee.getStackTrace()); 
     System.out.println(ee.getCause()); 
     return null; 
    } 
} 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    super.onCreateOptionsMenu(menu); 
    menu.add(Menu.NONE, 0, 0, "Refresh"); 
    Log.i(tag,"onCreateOptionsMenu"); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()) { 
    case 0: 

     Log.i(tag,"Set RSS Feed"); 
     return true; 
    case 1: 
     Log.i(tag,"Refreshing RSS Feed"); 
     return true; 
    } 
    return false; 
} 


private void UpdateDisplay() 
{ 
    TextView feedtitle = (TextView) findViewById(R.id.feedtitle); 
    TextView feedpubdate = (TextView) findViewById(R.id.feedpubdate); 
    ListView itemlist = (ListView) findViewById(R.id.itemlist); 


    if (feed == null) 
    { 
     feedtitle.setText("No RSS Feed Available"); 
     return; 
    } 

    if(feedtitle != null) 
     feedtitle.setText(feed.getTitle()); 
    if(feedpubdate != null) 
     feedpubdate.setText(feed.getPubDate()); 


    ArrayAdapter<RSSItem> adapter = new ArrayAdapter<RSSItem>(this,android.R.layout.simple_list_item_1,feed.getAllItems()); 

    itemlist.setAdapter(adapter); 

    itemlist.setOnItemClickListener(this); 

    itemlist.setSelection(0); 

} 


public void onItemClick(AdapterView parent, View v, int position, long id) 
{ 

    //Log.i(tag,"item clicked! [" + feed.getItem(position).getTitle() + "]");  

    Intent itemintent = new Intent(this,ShowDescription.class); 

    Bundle b = new Bundle(); 
    b.putString("title", feed.getItem(position).getTitle()); 
    b.putString("description", feed.getItem(position).getDescription()); 
    b.putString("link", feed.getItem(position).getLink()); 
    b.putString("pubdate", feed.getItem(position).getPubDate()); 

    itemintent.putExtra("android.intent.extra.INTENT", b); 

} 

} 
+0

どのような問題がありますか?ログキャッチエラー?クラッシュ?それとも助けが必要ですか? – Warpzit

+0

onItemClick()メソッドでは、コード行startActivity(itemintent)を記述します。 – user370305

+0

ここにエラーログを投稿してください。 – user370305

答えて

2

public void onItemClick(AdapterView parent, View v, int position, long id) 
{ 

    //Log.i(tag,"item clicked! [" + feed.getItem(position).getTitle() + "]");  

    Intent itemintent = new Intent(this,ShowDescription.class); 

    Bundle b = new Bundle(); 
    b.putString("title", feed.getItem(position).getTitle()); 
    b.putString("description", feed.getItem(position).getDescription()); 
    b.putString("link", feed.getItem(position).getLink()); 
    b.putString("pubdate", feed.getItem(position).getPubDate()); 

    itemintent.putExtra("android.intent.extra.INTENT", b); 

} 

クラス全体のコードは以下の通りです。また、切り替えているのはビューではなくアクティビティーです。より良い理解を得るにはthis documentationthis documentation on UIを参照してください。

+0

ありがとうございます!しかし、今私は新しい問題を抱えています。アイテムをクリックすると、アプリケーションがクラッシュします。 –

+0

元の質問にlogcatのスタックトレース出力を投稿する – Craigy

+0

私の問題を解決しました。私はShowDescriptionクラスをAndoidManifestに追加するのを忘れていました –

0

あなたはShowDescriptionアクティビティを開始する必要があります。

public void onItemClick(AdapterView parent, View v, int position, long id) { 
    ... 
    startActivity(itemintent); 
} 
関連する問題