私が約40時間を費やした私のプロジェクトはほぼ完了していますが、達成するための最後のタスクが1つあります。私の以前の問題は、ユーザがニュースRSSフィードをプルアップするためにクリックしたときに、その両方が同時にアクティビティとフィードを読み込もうとしたときにアプリケーションがハングすることがあったということです。これはasynctaskで解決されました。Android:onClickビューとAsynctaskを利用する
これとともに、私は4つのボタンがあり、それぞれのフィードを切り替え、本質的にはビューを変更するだけです。これにより、画面または新しいアクティビティの再ロードが不要になります。さて、私が最初にこのアクティビティを起動すると、asynctaskは私が望むのとまったく同じように動作しますが、下部の異なるビューのそれぞれに貼り付けをコピーするほど簡単ではありません。どのようにそれらの異なるボタン/ビューのそれぞれの下にasynctaskを実装するのですか?一番下のonClickが表示されます。
ここにはasynctaskセクションがあります。ここ
public class RssLoadingTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
displayRss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
preReadRss();
}
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
//super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
readRss();
return null;
}
}
、以下のonClickセクションです。明らかに上記の私はそれぞれのreadRss、preReadRSSなどを最初のアクティビティの適切な場所に持っていますが、なぜJavaはonClickセクションに同じasynctaskタスクを置くことを許可しませんか?私は、モディファイアについてまだ分かりませんが、モディファイアの配置方法はまだ分かりません。まだたくさんのことを学んでいます。
ます。public void onClickの(ビューV){
if (v == hawknation) {
try {
URL rssUrl = new URL("http://www.rss.com/feed");
SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
RSSHandler myRSSHandler = new RSSHandler();
myXMLReader.setContentHandler(myRSSHandler);
InputSource myInputSource = new InputSource(rssUrl.openStream());
myXMLReader.parse(myInputSource);
myRssFeed = myRSSHandler.getFeed();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
{
if (myRssFeed!=null)
{
TextView feedTitle = (TextView)findViewById(R.id.feedtitle);
TextView feedDescribtion = (TextView)findViewById(R.id.feeddescribtion);
TextView feedPubdate = (TextView)findViewById(R.id.feedpubDate);
TextView feedLink = (TextView)findViewById(R.id.feedlink);
feedTitle.setText(myRssFeed.getTitle());
feedDescribtion.setText(myRssFeed.getDescription());
feedPubdate.setText(myRssFeed.getPubdate());
feedLink.setText(myRssFeed.getLink());
MyCustomAdapter adapter =
new MyCustomAdapter(this, R.layout.row, myRssFeed.getList());
setListAdapter(adapter);
}
}
なぜ、内部クラスを持つ代わりに、 'RssLoadingTask'というパブリッククラスを使用していますか? –
問題が何であるか、なぜ 'onClick'に' AsyncTask'を置くことができないのか、少し説明してください。 –
@Francesco - 私はかなり初心者です。どうすれば修正できますか? – tjberte