2012-03-20 17 views
0

我該如何讓我的應用程序繼續檢查?通過含義保持檢查是否有在那裏如何不斷檢查android中的文本更改事件?

String str1, str2; 

str1 = word.getText().toString(); 
str2 = answer.getText().toString(); 

if(!(str1.equals("")) && !(str2.equals(""))) 
{ 
    teach.setEnabled(true); 
} 
else 
{ 
    teach.setEnabled(false); 
} 

這裏是哪裏,我會放在固定的代碼,使得它檢查和每一件事情我的Java代碼文本?請幫忙!

public class TeachmeDialog extends Activity implements OnClickListener { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.teachme); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    Button teach = (Button)findViewById(R.id.btn_teach_send); 
    teach.setOnClickListener(this); 


} 



@Override 
public void onClick(View v) { 
    switch(v.getId()) 
    { 
     case R.id.btn_teach_send: 
     { 
      // Create a new HttpClient and Post Header 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://monaiz.net/get.php"); 

      String responseStr = ""; 

      try { 
       TextView word = (TextView)findViewById(R.id.tv_teach_request); 
       TextView answer = (TextView)findViewById(R.id.tv_teach_response); 

       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 
       nameValuePairs.add(new BasicNameValuePair("word", word.getText().toString())); 
       nameValuePairs.add(new BasicNameValuePair("answer", answer.getText().toString())); 
       nameValuePairs.add(new BasicNameValuePair("action", "teach")); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 

       responseStr = EntityUtils.toString(entity); 

      } catch (Exception e) { 
       // TODO Auto-generated catch block 
      } 

      if(responseStr.equals("ok")) 
      { 
       Toast.makeText(getApplicationContext(), "Poco just learned a new word!", Toast.LENGTH_LONG).show(); 
       try { 
        this.finish(); 
       } catch (Throwable e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

}

+0

檢查裏面是否有文字?但是哪裏?你到底想做什麼? – 2012-03-20 06:48:57

+0

有問題的問題。請說清楚。發佈代碼不會**發佈問題。 – JoxTraex 2012-03-20 06:57:40

+0

可能的重複問題 - http://stackoverflow.com/questions/3696082/how-to-schedule-my-android-app-to-do-something-every-hour – 2012-03-20 06:59:39

回答

1

使用TextWatcher代替。你的「單詞」似乎是一個EditText。所以,你可以不喜歡這個 -

word.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
        teach.setEnabled(true); 
      } 
    }); 
+0

感謝您的幫助,工作。 – user1278696 2012-03-20 07:10:53

0

使用while循環布爾值true的情況下,寫要繼續檢查使用繼續關鍵字,要停止它裏面的邏輯,檢查使用中斷關鍵字。

+0

這將影響UI ...此外,應用程序將掛.. – aProgrammer 2012-03-20 07:01:04

+0

@amit我可能知道背後的原因。 – 2012-03-20 07:02:09

+0

while(true){}將一直運行,直到達到中斷條件爲止......但是1.當文本改變時(或發生焦點丟失事件,比文本改變事件有效),OP想要檢查,在這種情況下,聽衆會更合適,如其他答案中所建議的。2. UI therad將掛起,直到循環結束... – aProgrammer 2012-03-20 07:10:36

1

你可以做一些事情,像這樣:

String str1, str2; 

while (true) 
{ 
    str1 = word.getText().toString(); 
    str2 = answer.getText().toString(); 

    if(!(str1.equals("")) && !(str2.equals(""))) 
    { 
     teach.setEnabled(true); 
     break; 
    } 
    else 
    { 
     teach.setEnabled(false); 
    } 
} 

這將創建一個循環,將一直下去檢查一些條件。如果字符串不爲空,它將通過使用break關鍵字停止。話雖如此,我不推薦這樣的方法,因爲它很可能會影響你的用戶界面。我建議你做的是將焦點丟失事件附加到文本字段,並在焦點丟失時進行檢查。這將允許您只在需要時運行檢查。

0

在烏爾問題 STR1 = word.getText()的toString()。 str2 = answer.getText()。toString();

表示無論是word還是answer是edittext或textview都爲此寫入TextChanged監聽器。