0

こんばんは。

こんな活動をしています。handleMessage では、largeText フィールドにアクセスして変更することができますが、stringLinks フィールドや、UI 要素ではない他の各フィールド (TextView、Button、EditText など) を使用することはできません。stringLinks に追加するにはどうすればよいですか?

public class AboutUsActivity extends Activity {

Handler h;
TextView largeText;
List<String> stringLinks;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    stringLinks = new ArrayList<String>();  
    largeText = (TextView) findViewById(R.id.textView1);

    h = new Handler() {

        public void handleMessage(android.os.Message msg) {
            HtmlParser parser;
            StringBuilder result = new StringBuilder();
            try {
                parser = new HtmlParser(String.valueOf(msg.getData()));
                List<TagNode> links = parser.getContentByClassName("ab");
                for (Iterator<TagNode> iterator = stringLinks.iterator(); iterator
                        .hasNext();) {

                    TagNode divElement = (TagNode) iterator.next();
                    result.append(divElement.getText().toString());
                }

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


            largeText.setText(newhtml);       //Work
            stringLinks.add(newhtml);               //doesn't work
        }

    };

    MyHttpClientUsage connect = new MyHttpClientUsage(h);
    try {
        connect.getInfoAbout();
    } catch (HttpException e) {
        e.printStackTrace();
    }
}

}

4

1 に答える 1

2

あなたのことを正しく理解できたかどうかわかりません。

もしそうなら、あなたはAsyncTaskクラスを使うことができます

別のスレッドで何かを実行する doInBackground と UI Thread で実行される onPostExecute メソッドもチェックしてください。それらはオブジェクトを渡しながら互いに通信でき、タスクの進行状況を公開することもできます。

これは実際に SwingWorker に似ています (Swing アプリケーションをプログラムしたことがある場合は、これを使用したかもしれません)。

于 2013-02-13T16:47:10.217 に答える