Java 如何在android中持续检查文本更改事件?
我如何让我的应用程序不断检查这一点?意思是不断检查里面是否有文字Java 如何在android中持续检查文本更改事件?,java,android,Java,Android,我如何让我的应用程序不断检查这一点?意思是不断检查里面是否有文字 String str1, str2; str1 = word.getText().toString(); str2 = answer.getText().toString(); if(!(str1.equals("")) && !(str2.equals(""))) { teach.setEnabled(true); } else { teach.setEnabled(false); } 这是我的ja
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();
}
}
}
}
}
公共类TeachmeDialog扩展活动实现OnClickListener{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.teachme);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Picture);
按钮示教=(按钮)findViewById(R.id.btn\u teach\u send);
teach.setOnClickListener(this);
}
@凌驾
公共void onClick(视图v){
开关(v.getId())
{
案例R.id.btn\u教学\u发送:
{
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://monaiz.net/get.php");
字符串responsest=“”;
试一试{
TextView word=(TextView)findViewById(R.id.tv\u教学请求);
TextView答案=(TextView)findView答案(R.id.tv\u teach\u response);
//添加您的数据
List nameValuePairs=新的ArrayList(3);
添加(新的BasicNameValuePair(“word”,word.getText().toString());
添加(新的BasicNameValuePair(“answer”,answer.getText().toString());
添加(新的BasicNameValuePair(“动作”、“教学”));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httppost);
HttpEntity=response.getEntity();
responsest=EntityUtils.toString(实体);
}捕获(例外e){
//TODO自动生成的捕捉块
}
如果(响应等于(“ok”))
{
Toast.makeText(getApplicationContext(),“Poco刚学了一个新单词!”,Toast.LENGTH\u LONG.show();
试一试{
这个;
}捕获(可丢弃的e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
}
}
}在条件中使用while循环和布尔值true,在循环中写入逻辑,在其中继续检查使用继续关键字,在其中停止检查使用中断关键字 使用while循环并在条件中使用布尔真,将逻辑写入其中,在其中您要继续检查的地方使用继续关键字,在那里您要停止检查使用中断关键字 你可以这样做:
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
关键字停止。也就是说,我不推荐这种方法,因为它很可能会影响您的UI。我建议您将焦点丢失事件附加到文本字段,并在焦点丢失时进行检查。这将允许您仅在需要时运行检查。您可以这样做:
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
关键字停止。也就是说,我不推荐这种方法,因为它很可能会影响您的UI。我建议您将焦点丢失事件附加到文本字段,并在焦点丢失时进行检查。这将允许您仅在需要时运行检查。我假设您希望在修改EditText的文本时执行某些操作。如果是这样,就使用
要使用此选项,请执行以下操作:
word.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// do whatever you need to do HERE.
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
我假设您希望在修改EditText的文本时执行某些操作。如果是这样,就使用 要使用此选项,请执行以下操作:
word.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// do whatever you need to do HERE.
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
改用
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);
}
});
改用
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);
}
});
在你的问题上
str1=word.getText().toString();
str2=answer.getText().toString()
意思是单词或答案是edittext或textview写下TextChanged的侦听器。在你的问题中
str1=word.getText().toString();
str2=answer.getText().toString()
表示word或answer是edittext或textview write TextChanged侦听器。检查其中是否有文本?但是在哪里呢?你到底想做什么?一个模棱两可的问题。请讲清楚。发布代码不发布问题。可能存在重复问题-检查其中是否有文本?但是在哪里呢?你到底想做什么?一个模棱两可的问题。请讲清楚。发布代码不会发布问题。可能存在重复问题-@amit我可以知道挂起背后的原因吗。而(true){}将一直运行,直到达到中断条件为止。。。然而1。OP希望在文本更改时(或发生焦点丢失事件,比文本更改事件更有效)进行检查,在这种情况下,听者将更适合其他答案中的建议。。2.UI therad将挂起直到循环完成…@amit我可以知道挂起背后的原因吗。而(true){}将运行直到达到中断条件。。。然而1。OP希望在文本更改时(或发生焦点丢失事件,比文本更改事件更有效)进行检查,在这种情况下,听者将更适合其他答案中的建议。。2.UI therad将一直挂起,直到循环完成