強制

2012-05-10 13 views
0

最初のコードの特定の部分を実行するために、私はこのコードを得ました。 クリックしてテキストを変更したい場合(txt_wait強制

変更後、残りのコードを実行する必要があります。 しかし、どういうわけか、それは私もこのような何か(どちらも動作しませんでした)しようとしたそのコードが実行されると、その後、その後、彼はtxt_wait

を変更し、残りのコードを待ち:

public void make_square(View v) { 
    TextView txt_wait = (TextView) findViewById(R.id.square_txt); 
    txt_wait.setText("wait..."); 
    make_square2(v); 
} 
public void make_square2(View v){ 
    try{ 
    //rest of the code (scanning a bitmap for pixels) 
    } 
} 

をしかし、また、テキストを変更する前にまずmake_square2を実行します。 これを解決するにはどうすればよいですか?最初にtxt_waitを変更した後、コードの残りの部分を変更しますか?

おかげで、すでに、 Bigflow

EDIT1:

はこの試みた:

public void make_square(final View v) { 

    TextView txt_wait = (TextView) findViewById(R.id.square_txt); 
    txt_wait.setText("wait..."); 
     new Thread() { 
      public void run() { 
       make_square2(v); 
      } 
     }.start(); 

} 

public void make_square2(View v){ 
    try{ 
     //rest of the code 
    } 
} 

をし、それが私のこのエラーを与える:

E/AndroidRuntime(17487): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 

私もこれを試してみました:

public void make_square(View v) { 
     TextView txt_wait = (TextView) findViewById(R.id.square_txt); 
     txt_wait.setText("wait..."); 
     make_square2(v);  
} 

public void make_square2(View v) 
     new Thread() { 
      public void run() { 
//rest of the code 
} 
     }.start(); 

これもまったく同じエラーです。

私はスレッドに慣れていない、多分私は非常に悪いことをする。 もう一度お手伝い願います。

答えて

0

make_square2メソッドのコード用に別のスレッドを作成すると、テキストが変更され、残りのコードがUIスレッド以外のスレッドで実行されていると思われます。ブロックされているようですUIスレッド..

+0

私は試しましたが、動作しませんでした。もう一度見ていただけますか?後** Edit1 ** – Bigflow

+0

ok ...私はあなたのコードでは、UIで何かを変更しようとしていると思う...それはmainbスレッド以外の他のスレッドから行うことはできません...あなたのスレッドを入れてrunOnUiThreadメソッドのUIを変更しているコード – 5hssba

+0

申し訳ありませんが、あなたが正確に何を意味するかわかりません、私はアンドロイドプログラミングの初心者です、あなたは他の方法でそれを説明することはできますか? – Bigflow