2012-12-31 28 views
-2

我的問題是這樣的: 我在EditText中輸入文本,然後顯示每個單獨的字母,但可以使用2個ImageView進行顯示。 我對ImageView沒有任何問題,問題是當你輸入單詞到for,試圖延遲顯示第一個字母並繼續與其他人,但它不起作用,只是發送給我的最後一個字母字輸入Android中的循環,單詞和圖像

代碼:

public class deletreo extends Activity { 

    TextView tv; 
    EditText etxt; 
    ImageView img,img2; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.deletreo); 

     tv = new TextView(this); 
     etxt = (EditText)findViewById(R.id.text); 
     Button btn = (Button)findViewById(R.id.btn7); 

     btn.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       letra(); 

      } 
     }); 



    }//fin bundle 





    public void letra() { 

     String t = ""; 

     t = etxt.getText().toString(); 
     String l = t.toLowerCase(); 
     int p = l.length(); 


      try{ 
       for(int j = 0 ; j < p ; j++){ 


        if(l.charAt(j) == 'a' || l.charAt(j) == 'A'){ 
         img = (ImageView)findViewById(R.id.img); 
         img.setImageResource(R.drawable.aa); 
         img2 = (ImageView)findViewById(R.id.img2); 
         img2.setImageResource(R.drawable.image_1); 

        } 

         if(l.charAt(j) == 'b' || l.charAt(j) == 'B'){ 
          img = (ImageView)findViewById(R.id.img); 
          img.setImageResource(R.drawable.bb); 
          img2 = (ImageView)findViewById(R.id.img2); 
          img2.setImageResource(R.drawable.image_2); 

         } 
          if(l.charAt(j) == 'c' || l.charAt(j) == 'C'){ 
           img = (ImageView)findViewById(R.id.img); 
           img.setImageResource(R.drawable.cc); 
           img2 = (ImageView)findViewById(R.id.img2); 
           img2.setImageResource(R.drawable.image_3); 

          } 
           if(l.charAt(j) == 'd' || l.charAt(j) == 'D'){ 
            img = (ImageView)findViewById(R.id.img); 
            img.setImageResource(R.drawable.dd); 
            img2 = (ImageView)findViewById(R.id.img2); 
            img2.setImageResource(R.drawable.image_4); 
           } 
            if(t.charAt(j) == 'e' || t.charAt(j) == 'E'){ 
             img = (ImageView)findViewById(R.id.img); 
             img.setImageResource(R.drawable.ee); 
             img2 = (ImageView)findViewById(R.id.img2); 
             img2.setImageResource(R.drawable.image_5); 
            } 
             if(t.charAt(j) == 'f' || t.charAt(j) == 'F'){ 
              img = (ImageView)findViewById(R.id.img); 
              img.setImageResource(R.drawable.ff); 
              img2 = (ImageView)findViewById(R.id.img2); 
              img2.setImageResource(R.drawable.image_6); 
             } 
              if(t.charAt(j) == 'g' || t.charAt(j) == 'G'){ 
               img = (ImageView)findViewById(R.id.img); 
               img.setImageResource(R.drawable.gg); 
               img2 = (ImageView)findViewById(R.id.img2); 
               img2.setImageResource(R.drawable.image_7); 
              } 
               if(t.charAt(j) == 'h' || t.charAt(j) == 'H'){ 
                img = (ImageView)findViewById(R.id.img); 
                img.setImageResource(R.drawable.hh); 
                img2 = (ImageView)findViewById(R.id.img2); 
                img2.setImageResource(R.drawable.image_8); 
               } 
                if(t.charAt(j) == 'i' || t.charAt(j) == 'I'){ 
                 img = (ImageView)findViewById(R.id.img); 
                 img.setImageResource(R.drawable.ii); 
                 img2 = (ImageView)findViewById(R.id.img2); 
                 img2.setImageResource(R.drawable.image_9); 
                } 
                 if(t.charAt(j) == 'j' || t.charAt(j) == 'J'){ 
                  img = (ImageView)findViewById(R.id.img); 
                  img.setImageResource(R.drawable.jj); 
                  img2 = (ImageView)findViewById(R.id.img2); 
                  img2.setImageResource(R.drawable.image_10); 
                 } 
                  if(t.charAt(j) == 'k' || t.charAt(j) == 'K'){ 
                   img = (ImageView)findViewById(R.id.img); 
                   img.setImageResource(R.drawable.kk); 
                   img2 = (ImageView)findViewById(R.id.img2); 
                   img2.setImageResource(R.drawable.image_11); 
                  } 
                   if(t.charAt(j) == 'l' || t.charAt(j) == 'L'){ 
                    img = (ImageView)findViewById(R.id.img); 
                    img.setImageResource(R.drawable.ll); 
                    img2 = (ImageView)findViewById(R.id.img2); 
                    img2.setImageResource(R.drawable.image_12); 
                   } 
                    if(t.charAt(j) == 'm' || t.charAt(j) == 'M'){ 
                     img = (ImageView)findViewById(R.id.img); 
                     img.setImageResource(R.drawable.mm); 
                     img2 = (ImageView)findViewById(R.id.img2); 
                     img2.setImageResource(R.drawable.image_13); 
                    } 
                     if(t.charAt(j) == 'n' || t.charAt(j) == 'N'){ 
                      img = (ImageView)findViewById(R.id.img); 
                      img.setImageResource(R.drawable.nn); 
                      img2 = (ImageView)findViewById(R.id.img2); 
                      img2.setImageResource(R.drawable.image_14); 
                     } 
                      if(t.charAt(j) == 'ñ' || t.charAt(j) == 'Ñ'){ 
                       img = (ImageView)findViewById(R.id.img); 
                       img.setImageResource(R.drawable.nini); 
                       img2 = (ImageView)findViewById(R.id.img2); 
                       img2.setImageResource(R.drawable.image_15); 
                      } 
                       if(t.charAt(j) == 'o' || t.charAt(j) == 'O'){ 
                        img = (ImageView)findViewById(R.id.img); 
                        img.setImageResource(R.drawable.oo); 
                        img2 = (ImageView)findViewById(R.id.img2); 
                        img2.setImageResource(R.drawable.image_16); 
                       } 
                        if(t.charAt(j) == 'p' || t.charAt(j) == 'P'){ 
                         img = (ImageView)findViewById(R.id.img); 
                         img.setImageResource(R.drawable.pp); 
                         img2 = (ImageView)findViewById(R.id.img2); 
                         img2.setImageResource(R.drawable.image_17); 
                        } 
                         if(t.charAt(j) == 'q' || t.charAt(j) == 'Q'){ 
                          img = (ImageView)findViewById(R.id.img); 
                          img.setImageResource(R.drawable.qq); 
                          img2 = (ImageView)findViewById(R.id.img2); 
                          img2.setImageResource(R.drawable.image_18); 
                         } 
                          if(t.charAt(j) == 'r' || t.charAt(j) == 'R'){ 
                           img = (ImageView)findViewById(R.id.img); 
                           img.setImageResource(R.drawable.rr); 
                           img2 = (ImageView)findViewById(R.id.img2); 
                           img2.setImageResource(R.drawable.image_19); 
                          } 
                           if(t.charAt(j) == 's' || t.charAt(j) == 'S'){ 
                            img = (ImageView)findViewById(R.id.img); 
                            img.setImageResource(R.drawable.ss); 
                            img2 = (ImageView)findViewById(R.id.img2); 
                            img2.setImageResource(R.drawable.image_20); 
                           } 
                            if(t.charAt(j) == 't' || t.charAt(j) == 'T'){ 
                             img = (ImageView)findViewById(R.id.img); 
                             img.setImageResource(R.drawable.tt); 
                             img2 = (ImageView)findViewById(R.id.img2); 
                             img2.setImageResource(R.drawable.image_21); 
                            } 
                             if(t.charAt(j) == 'u' || t.charAt(j) == 'U'){ 
                              img = (ImageView)findViewById(R.id.img); 
                              img.setImageResource(R.drawable.uu); 
                              img2 = (ImageView)findViewById(R.id.img2); 
                              img2.setImageResource(R.drawable.image_22); 
                             } 
                              if(t.charAt(j) == 'v' || t.charAt(j) == 'V'){ 
                               img = (ImageView)findViewById(R.id.img); 
                               img.setImageResource(R.drawable.vv); 
                               img2 = (ImageView)findViewById(R.id.img2); 
                               img2.setImageResource(R.drawable.image_23); 
                              } 
                               if(t.charAt(j) == 'w' || t.charAt(j) == 'W'){ 
                                img = (ImageView)findViewById(R.id.img); 
                                img.setImageResource(R.drawable.ww); 
                                img2 = (ImageView)findViewById(R.id.img2); 
                                img2.setImageResource(R.drawable.image_24); 
                               } 
                                if(t.charAt(j) == 'x' || t.charAt(j) == 'X'){ 
                                 img = (ImageView)findViewById(R.id.img); 
                                 img.setImageResource(R.drawable.xx); 
                                 img2 = (ImageView)findViewById(R.id.img2); 
                                 img2.setImageResource(R.drawable.image_25); 
                                } 
                                 if(t.charAt(j) == 'y' || t.charAt(j) == 'Y'){ 
                                  img = (ImageView)findViewById(R.id.img); 
                                  img.setImageResource(R.drawable.yy); 
                                  img2 = (ImageView)findViewById(R.id.img2); 
                                  img2.setImageResource(R.drawable.image_26); 
                                 } 
                                  if(t.charAt(j) == 'z' || t.charAt(j) == 'Z'){ 
                                   img = (ImageView)findViewById(R.id.img); 
                                   img.setImageResource(R.drawable.zz); 
                                   img2 = (ImageView)findViewById(R.id.img2); 
                                   img2.setImageResource(R.drawable.image_27); 

                                  } 

          Thread.sleep(2000);                                                 
       }//fin del for 

      }//fin try 

      catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      finally{} 


    }//fin letra(); 



}//fin 
+0

這是很多代碼。你可以使用調試器(甚至是日誌語句)來縮小問題的範圍嗎? –

+0

對於您的巨大級聯'if/else'語句,您應該使用'switch'語句。它將更加清潔和高效。 – Michael

+0

它是,只是在哪裏代碼,如果它只是比較在EditText中輸入的字母,我甚至沒有改變,通過切換到一些嚴重 – DiegoF

回答

0

你會希望把這個動作在一個單獨的線程,然後用Handler暫停和恢復你剛剛創造了這個新的線程。這樣做是爲了不凍結主UI線程,這是Android默認運行的東西。

我用Google搜索「Android的附加延遲其間的變化」,並得到了一堆的結果,其中一個是這樣的:Add a delay to Progress Dialog

此外,使用switch語句,而不是你的巨人級聯if/else語句。它會讓你的代碼更加乾淨和高效。

+0

有人想告訴我爲什麼我錯了,而不是隻是downvoting我?它對我沒有幫助,它對OP沒有幫助。 – Michael

+0

我試過了你建議的方式,製作一個單獨的線程,並且我得到了相同的結果,我嘗試了4種不同的線程方式,但我無法工作 – DiegoF

+0

那麼你做錯了。 Google'如何在android中進行多線程'。 – Michael

1

下降for循環的底部你撥打:

Thread.sleep(2000); 

這隻會阻塞UI線程爲2秒。由於UI線程基本上是應用程序的生命線,因此上述語句將停止執行代碼全部。如果阻塞主線程,循環外的代碼不會奇蹟般地繼續運行,這就是爲什麼您的UI在每次迭代後都不會更新的原因。

在與螺紋直接交互代替,它可能更容易發佈延遲RunnableHandler或使用模擬「滴答」一些其他機制(例如TimerTimerTaskCountDownTimer浮現在腦海中)。隨着每一個滴答,你可以顯示下一個字符。

+0

我試圖如下: 公共無效letra(){ \t \t 串T = 「」; \t \t \t t = etxt.getText()。toString(); \t \t String l = t.toLowerCase(); \t int p = 1。長度(); \t \t \t \t \t嘗試{ \t \t \t \t對(INT J = 0;Ĵ DiegoF

+1

@DiegoF:很抱歉,但我不知道在(相當混亂)的代碼在您的評論改變。儘管如此,我仍然可以看到'Thread.sleep(2000)',這實際上是你應該擺脫的。 –

+0

對不起,我認爲它可能看起來不錯,我已經做了for循環的結尾是把Thread.sleep(2000)暫停2秒,所以它不工作,是我試圖做的 – DiegoF