2012-05-11 33 views
2
public class master extends Activity { 
    ProgressDialog progressDialog; 
    EditText tahmini_kelime; 
    EditText girilen_sayi ; 
    EditText toplam_harf_sayisi ; 
    Button tamamdir; 
    TextView jTextArea1; 
    Vector vector_all,vect_end,vect,recent_search; 
    BufferedReader read; 
    String recent_tahmin_kelime; 
    boolean bayrak,bayrak2 ; 
    int column_number ; 
    InputStreamReader inputreader ; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.master); 
     column_number=0; 
     bayrak=true; 
      toplam_harf_sayisi=(EditText)findViewById(R.id.toplam_harf); 
      tahmini_kelime=(EditText)findViewById(R.id.tahmini_kelime); 
      girilen_sayi=(EditText)findViewById(R.id.sayi_gir); 
      tamamdir=(Button)findViewById(R.id.tamamdirrrr); 
      jTextArea1=(TextView)findViewById(R.id.jte); 
      bayrak2=true; 




      recent_search = new Vector(); 
      InputStream inputStream = getResources().openRawResource(R.raw.sozluk); 
      try { 
        inputreader  = new InputStreamReader(inputStream,"utf-8"); 
      } catch (UnsupportedEncodingException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }; 
      read = new BufferedReader(inputreader); 


      int k = 0; 
      String result = ""; 
      try { 

       vector_all = new Vector(); 
       while (read.ready()) { 

        result = read.readLine(); 
        vector_all.add(result); 
        jTextArea1.append(result + "\n"); 
        k = k + 1; 
       } 


       String size = "" + k; 


      } catch (IOException ex) { 
      } 




      tamamdir.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 




       if(bayrak2) 
       { 
        if(Integer.parseInt(toplam_harf_sayisi.getText().toString())>8 || Integer.parseInt(toplam_harf_sayisi.getText().toString())<=1) 
        { 
          toplam_harf_sayisi.setText(""); 
          Dialog dl=new Dialog(master.this); 
          dl.setTitle("hatalı giriş"); 
          dl.setCanceledOnTouchOutside(true); 
          dl.show(); 
          return; 
        } 


        int findwordlength = Integer.parseInt(toplam_harf_sayisi.getText().toString()); 

         int k = 0; 
         String result = ""; 
         jTextArea1.setText(""); 
         InputStream inputStream = getResources().openRawResource(R.raw.sozluk); 
         try { 
           inputreader  = new InputStreamReader(inputStream,"utf-8"); 
         } catch (UnsupportedEncodingException e1) { 
          // TODO Auto-generated catch block 
          e1.printStackTrace(); 
         }; 
         read = new BufferedReader(inputreader); 

         String resultword = ""; 
         try { 

          vect = new Vector(); 



          while (read.ready()) { 

           result = read.readLine(); 

           if (result.length() == findwordlength) { 

            vect.addElement(result); 
            resultword = resultword + result + "\n"; 
            k = k + 1; 
           } 
           jTextArea1.setText(""); 
          } 



          jTextArea1.append(resultword + "\n"); 

          RandomKelime(vector_all,0); 



         } catch (IOException ex) { 
         } 

         toplam_harf_sayisi.setEnabled(false); 
         girilen_sayi.setEnabled(true); 
         bayrak2=false; 
       } 
       else 
       { 

        progressDialog = ProgressDialog.show(master.this, "Bir Düşüneyim :D", "lütfen bekleyiniz..."); 
        Thread thread = new Thread(new Runnable() { 
         public void run() { 


        mainGuessWord(column_number); 


        handler.sendEmptyMessage(0); 
         } 
        }); 
        thread.start(); 

        girilen_sayi.setText(""); 

         } 



         } 




     }); 





    } 

    private void mainGuessWord(int look) { 
     int result_int = 0; 
     String randomword = ""; 
     int randomword2 = 0; 


     randomword = tahmini_kelime.getText().toString(); 


      result_int = Integer.parseInt(girilen_sayi.getText().toString()); 


     if (result_int == 0) { 
      mevcut_degil(vect, randomword); 
     } else { 
      elemeAgaci(vect, randomword, result_int); 
     } 

    } 


    public void elemeAgaci(Vector vect, String elem, int length) { 
     String word = elem.toString(); 
     Vector cmp_vect; 
     cmp_vect = new Vector(); 
     vect_end = new Vector(); 
     int count = 0; 
     int countword = 0; // toplam word sayısı 
     int each_word_total = 0; // her kelimede bulunan harf sayısı 
     jTextArea1.setText(""); 

      String compare = ""; 
      for (int i = 0; i < vect.size(); i++) { 
       each_word_total = 0; 
       compare = ""; 
       for (int j = 0; j < word.length(); j++) { 

        if(!compare.contains(""+word.charAt(j))) 
        { 
        for (int k = 0; k < vect.get(i).toString().length(); k++) { 
         if (vect.get(i).toString().charAt(k) == word.charAt(j)) { 
          each_word_total++; 

         } 

        } 


        compare=""+compare+word.charAt(j); 
        } 

       } 
       System.out.println("" + vect.get(i) + " => " + each_word_total); 

       if (length == each_word_total) { 
        cmp_vect.add(vect.get(i)); 
        jTextArea1.append(vect.get(i) + "\n"); 
        countword++; 
       } 

      } 


      vect.clear(); 
      for (int l = 0; l < cmp_vect.size(); l++) { 
       vect.add(cmp_vect.get(l)); 
      } 




     if (countword == 1) { 
       Dialog dl=new Dialog(master.this); 
       dl.setTitle("The Word id : "+jTextArea1.getText().toString()); 
       dl.setCanceledOnTouchOutside(true); 
       dl.show(); 

     } else { 
      column_number = column_number + 1; 
      if(vect.size()<10){ 
      RandomKelime_Table(vect); 
      }else{ 
      RandomKelime(vector_all, column_number); 
      } 
     } 
    } 

    public void mevcut_degil(Vector vect, String m) { 
     char control[]; 
     control = m.toCharArray(); 
     boolean flag = false; 
     int countword = 0; 
     Vector detect; 
     detect = new Vector(); 

     jTextArea1.setText(""); 
     for (int k = 0; k < vect.size(); k++) { 
      flag = false; 
      for (int s = 0; s < control.length; s++) { 
       if (vect.get(k).toString().contains("" + control[s])) { 
        flag = true; 
       } 

      } 
      if (!flag) { 
       detect.addElement(vect.get(k)); 
       countword = countword + 1; 
      } 

     } 
     vect.clear(); 
     for (int s = 0; s < detect.size(); s++) { 
      vect.addElement(detect.get(s)); 
     } 
     for (int a = 0; a < countword; a++) { 
      jTextArea1.append(vect.get(a).toString() + "\n"); 
     } 

     if (countword == 1) { 
       Dialog dl=new Dialog(master.this); 
       dl.setTitle("The Word id : "+jTextArea1.getText().toString()); 
       dl.setCanceledOnTouchOutside(true); 
       dl.show(); 
     } 

     else { 
      column_number = column_number + 1; 
      RandomKelime(vect, column_number); 
     } 
    } 





    public void RandomKelime(Vector vector, int k) 
    { 
     String sesli[]={"a","e","ı","i","o","ö","u","ü"}; 

     Random a = new Random(); 

     if (k == 0) { 
      String passedword = ""; 
      passedword = vector_all.get((int) (Math.random() * vector_all.size())).toString(); 

      while (passedword.length() < 8) { 
       passedword = vector_all.get((int) (Math.random() * vector_all.size())).toString(); 

      } 

      tahmini_kelime.setText(passedword); 
      recent_tahmin_kelime=passedword; 

     // jTable1.setValueAt(vector_all.get((int) (Math.random() * vector_all.size())), k, 0); 
     } else { 
     recent_search.addElement(recent_tahmin_kelime); 
     int say = 0; 
     String design = ""; 
     String guess_words = ""; 
     String as=""; 
     int f=0; 
     int count=0; 
     int calculate_all=0; 

     for (int u = 0; u < recent_search.size(); u++) { 
     design = recent_search.get(u).toString(); 
     bayrak = false; 
     as=""; 
     count=0; 
     for(int s=0;s<sesli.length;s++) 
     { 
     if(design.contains(""+sesli[s]) && count==0){ 
     as+=""+sesli[s]; 
     count++; 
     } 

     } 

     guess_words = vector_all.get((int) a.nextInt(vector_all.size())).toString(); 

      while (guess_words.length() < 8) { 
       guess_words = vector_all.get((int) (Math.random() * vector_all.size())).toString(); 

      } 




     while (say < design.length()) { 
      calculate_all=0; 
     while (guess_words.contains("" + as) && !design.equals(guess_words)) { 
     say = 0; 
     calculate_all++; 
     guess_words = vector_all.get(a.nextInt(vector_all.size())).toString(); 

      while (guess_words.length() < 8) { 
       guess_words = vector_all.get((int) (Math.random() * vector_all.size())).toString(); 

      } 



     f=f+1; 
     System.out.println("Tahmın: " + guess_words + " => " + design); 
     if(calculate_all>vect.size()) 
     { 
     break; 
     } 
     } 
     say++; 
     System.out.println("coutn: " + say); 
     } 
     } 


     if (true) { 
     tahmini_kelime.setText(guess_words); 
     } 


     } 
    } 

    public void RandomKelime_Table(Vector vector) { 
      String passedword = ""; 
      Random a = new Random(); 

      try { 


      passedword = vect.get(a.nextInt(vect.size())).toString(); 
      } catch (Exception e) { 
        Dialog dl=new Dialog(master.this); 
        dl.setTitle("Hatalı Giriş.Yeniden Başlayın."); 
        dl.setCanceledOnTouchOutside(true); 
        dl.show(); 
       yeniden_basla(); 
      } 
      tahmini_kelime.setText(passedword); 

    } 

    public void yeniden_basla() 
    { 
     bayrak2=true; 
     girilen_sayi.setEnabled(false); 
     toplam_harf_sayisi.setEnabled(true); 
     toplam_harf_sayisi.setText(""); 
     vect.clear(); 
     vector_all.clear(); 
     vect_end.clear(); 
     recent_search.clear(); 
     jTextArea1.setText(""); 
     recent_tahmin_kelime=""; 
     column_number=0; 
     bayrak=true; 
     InputStream inputStream = getResources().openRawResource(R.raw.sozluk); 
      try { 
        inputreader  = new InputStreamReader(inputStream,"utf-8"); 
      } catch (UnsupportedEncodingException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }; 
      read = new BufferedReader(inputreader); 


      int k = 0; 
      String result = ""; 
      try { 

       vector_all = new Vector(); 
       while (read.ready()) { 

        result = read.readLine(); 
        vector_all.add(result); 
        jTextArea1.append(result + "\n"); 
        k = k + 1; 
       } 


       String size = "" + k; 


      } catch (IOException ex) { 
      } 
    } 



    private Handler handler = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 

       progressDialog.dismiss(); 


      } 
     }; 



} 

這是我所有的代碼。只有創建視圖層次結構的原始線程可以觸及其視圖。 android

+1

'girilen_sayi.setText( 「」) ;'可以在非UI線程不能調用,您需要在UI線程做,或'handler.sendEmptyMessage(0);'當處理消息調用'setText' – idiottiger

+0

我使用的UI線程,但它的錯誤太多 –

+0

我刪除girilen_sayi .setText(「」);但它也錯誤您 –

回答

2

你不顯示在您創建的處理程序(的onCreate?在onStart?別的地方?)。它是從主線程開始的嗎?如果是這樣,您需要提供更完整的堆棧跟蹤,以便我們理解。

如果你從另一個線程啓動它那麼這是因爲它試圖改變progressDialog並且必須從主線程來完成的問題。

PS:如果你使用的AsyncTask你不會有,因爲它是專門用來做你想要什麼,並是線程安全的劃傷解決這個你的頭。

發表評論:使用AsyncThread:添加進度條onPreExecute(),更改的run()來doInBackground()和移動解僱()來onPostExecute(

+0

編輯我的問題你的願望 –

+0

你能說明什麼?一個小小的代碼示例?謝謝回答 –

+0

http://stackoverflow.com/questions/4538338/progressdialog-in-asynctask或http://stackoverflow.com/questions/6450275/android-how-to-work-with-asynctasks-progressdialog如果你想根據你的單詞猜測進度顯示進度 –

相關問題