0

私のアプリケーションは強制終了し続けます。しかし、Eclipseはエラーや警告を表示しません

package com.example.pkg;

import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;

public class subActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        Thread r = new Thread(new Runnable(){

                      public void run()
                      {   final TextView tv=(TextView)findViewById(R.id.rline1);
                          String s=(String)tv.getText();
                          tv.setText(s+"Works !");
                      }
        });
        r.start();
    }

}

別のアクティビティがこのアクティビティを呼び出します。その1つにはTextViewが表示されています。私がしたいのは、TextViewに表示されているR.string.rline1と呼ばれるこの文字列リソースを変更することだけです。別の方法がある場合は、これを行う方法を教えてください

4

3 に答える 3

0

まず、UI スレッド内の GUI スタッフを更新する必要があります。そうしないと、機能しません。テキストビューのインスタンスを作成して再度設定する回数を知っている2番目のことは、スレッド内にいて、完了したらスレッドを停止するフラグを設定していないことです。たとえば、UI スレッドの場合:

        Runnable update_gui = new Runnable() {
            @Override
            public void run() {
              final TextView tv=(TextView)findViewById(R.id.rline1);
              String s=(String)tv.getText();
              tv.setText(s+"Works !");

            }
        };runOnUiThread(update_gui);
于 2012-07-13T11:25:32.447 に答える
0

tv.setText(s+"Works !");スレッドでUI (を使用) を更新しようとしています。それをしてはいけない。メイン スレッドで UI を更新する必要があります。この役に立たないスレッドを削除するだけです:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        TextView tv=(TextView)findViewById(R.id.rline1);
        String s=(String)tv.getText();
        tv.setText(s+"Works !");
    }

: Eclipse はエラーを表示しません。logcat を開く必要があります (デフォルトでは、Eclipse の DDMS パースペクティブで)。次回、問題が発生した場合は、logcat エラーを投稿してください。

于 2012-07-13T11:20:02.193 に答える
0

以下のコードを置き換えます

     Thread r = new Thread(new Runnable(){

                  public void run()
                  {   **final TextView tv=(TextView)findViewById(R.id.rline1);
                      String s=(String)tv.getText();
                      tv.setText(s+"Works !");**
                  }
    });
    r.start();

final TextView tv=(TextView)findViewById(R.id.rline1);
                          String s=(String)tv.getText();
                          tv.setText(s+"Works !");
于 2012-07-13T11:22:16.583 に答える