当前位置: 首页 > 知识库问答 >
问题:

Android:在AsyncTask中传递字符串参数?

刘和正
2023-03-14

我正在实现一个Android应用程序来加载RSS提要。在我决定添加一个新屏幕以显示两个按钮并尝试向AsyncTask传递一个字符串值之前,它工作得非常好。其思路是这样的:屏幕将显示两个按钮供用户选择。一旦用户点击了其中一个按钮,它将调用AsyncTask以及字符串值(url)到readRSS(url),然后rss提要将由displayRSS(url)显示。readRSS(url)将相应地加载RSS提要。

我的代码如下:

import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class RSSProActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rss);
        startLoadRSS();

    }

    private void startLoadRSS(){
        new RSS_Load().execute();
    }

    //
    private void preReadRSS()
    {
        Toast.makeText(this, "Reading RSS, Please wait.", Toast.LENGTH_LONG).show();
    }

        private StringBuffer readRSS(String url)
        {
            //depends on the inputs, will set the String value accordingly. It should be "url" but using the default value at the moment.

            String urlStr = "http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml";
            AndroidSAXFeedParser saxFeedParser = new AndroidSAXFeedParser(urlStr);
            List<RSSItem> parse = saxFeedParser.parse();
            StringBuffer sb = new StringBuffer();
            sb.append(parse.size()+" items found");
            for(RSSItem item:parse){
                sb.append(item.getTitle()+"posted at "+item.getDate());
                sb.append(item.getDescription());
            }
            return sb;
        }

        private void displayRSS()
        {
            StringBuffer sb = readRSS(url);
            TextView textView = new TextView(this);
            textView.setText(sb.toString());
            setContentView(textView);
            Toast.makeText(this, "SUCCESS", Toast.LENGTH_LONG).show();
        }


        //AsyncTask
        public class RSS_Load extends AsyncTask<Void, Void, Void>{
           @Override
           protected void onPreExecute() {
              super.onPreExecute();
              preReadRSS();
           }

           @Override
           protected Void doInBackground(Void... arg0) {
             readRSS();
                       // should be readRSS(url) here
               return null;
           }

           @Override
           protected void onProgressUpdate(Void... values) {
              //super.onProgressUpdate(values);
          //    updateProgressBar(values[0]);

           }

           @Override
           protected void onPostExecute(Void result) {
              super.onPostExecute(result);
           //   dismissProgressBar();
                // should be displayRSS(url) here
            displayRSS();

           }               

 }
}

提前道谢!

共有1个答案

郁权
2023-03-14

...意味着它实际上是在传递一个这种类型的数组。因此,如果将其更改为:

protected Void doInBackground(String... arg0)

您需要执行以下操作:

@Override
protected Void doInBackground(String... arg0)
{
    readRSS(arg0[0]);
    // should be readRSS(url) here
    return null;
}
 类似资料:
  • 问题内容: 我想将参数(即字符串)传递给Onclick函数。目前,我这样做: 例如,result.name等于字符串“ Add”。当我单击此按钮时,出现一个错误,提示未定义添加。由于此函数调用可以完美地与数字参数一起使用,因此我认为它与字符串中的符号“”有关。以前有人遇到过这个问题吗? 问题答案: 看起来您是从字符串构建DOM元素。您只需要在result.name周围添加一些引号即可: 您实际上应

  • 我试图通过C#代码传递此字符串,但失败了: soap:body1479374 System.xml.XmlDocument文档=新建System.xml.XmlDocument();Doc.LoadXML(字符串); 尝试发送作为整体和作为3个部分,但在A节内失败 string Sectiona=@“ soap:body ”; 字符串段B=“1479374”; 字符串节C=“”; 字符串数据=段A

  • 我有一个不起作用的命令: 为了快速解释它:下面的第一部分应该从我拥有的sqlite文件中检索表名: 提前感谢您的帮助。

  • 我需要传递一个字符串参数作为querystring参数,这应该是可选的。 在这里,我希望将位置作为可选参数。我试着用作为。但它对我不起作用。让我知道解决方案。

  • #substr($(sometext),1,3)-->['$(sometext)','1','3'] #substr(#trim(你好),1,3)--->['#trim(你好)‘,'1','3'] #substr(#replace(hello-world,hello,hi),1,3)-->['#replace(hello-world,hello,hi)','1','3'] 当我们有这样的嵌套函数时

  • 问题内容: 我喜欢使用URL之类的,而不是传递URL之类的查询字符串。 如何在Struts2中做到这一点? 我做了如下。但它不起作用,显示500错误代码 问题答案: 在2.1+下使用纯Struts2是不可能的。解决方法是,可以使用UrlRewriterfilter进行此操作。从Struts2的2.1+使用通配符的帮助下,你可以使用像看到这样的帖子,但不喜欢。区别在于在第二种情况下没有参数名称。解决