我有一些与我的按钮关联的值,该值与数据库中的特定字段链接。
如果该字段不是Null,如何禁用按钮(不单击)。
我试图这样做:
public class MainActivity extends AppCompatActivity {
Button button;
String service_id = "65";
String indate = "29/03/2018";
String intransit = "2018-03-21 15:00:00.000";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
button = (Button) findViewById( R.id.Enter );
button.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
new Background().execute();
//new Enter().execute();
}
} );
}
private class Background extends AsyncTask<String, Void, String>{
String url;
@Override
protected String doInBackground(String... strings) {
url = "http://localhost/check.php";
try {
URL urL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urL.openConnection();
conn.setRequestMethod( "POST" );
conn.setDoInput( true );
conn.setDoOutput( true );
OutputStream out = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( out, "UTF-8" ) );
String data = URLEncoder.encode( "service_id", "UTF-8" ) + "=" + URLEncoder.encode( service_id, "UTF-8" ) + "&"
+ URLEncoder.encode( "indate", "UTF-8" ) + "=" + URLEncoder.encode( indate, "UTF-8")+ "&"
+ URLEncoder.encode( "intransit", "UTF-8" ) + "=" + URLEncoder.encode( intransit, "UTF-8");
writer.write( data );
writer.flush();
writer.close();
out.close();
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader( in, "iso-8859-1" ) );
String result = "";
String line = "";
while((line =reader.readLine()) != null){
result += line;
}
reader.close();
in.close();
conn.disconnect();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result){
Log.e(TAG, "Result ="+result);
if(result.equals( "Disabled" )){
button.setEnabled( false );
}else{
Toast.makeText( MainActivity.this, "Updated", Toast.LENGTH_SHORT ).show();
button.setEnabled( false );
}
}
}
}
在此代码中: 在这里,当“活动开始”按钮仍然启用并且要禁用它时,我必须单击它。
请裸露我的英语。
感谢您的帮助。
答案 0 :(得分:0)
Android提供了两种方法来实现相同的目标-
1. button.setClickable(false)
如果您使用此按钮,按钮将不响应任何点击事件。
2. button.setEnabled(false)
使用此按钮不仅不可单击,而且还直观地表明按钮已禁用。
根据空检查(条件),您可以轻松实现此目标。 谢谢。
答案 1 :(得分:0)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
button = (Button) findViewById( R.id.Enter );
if(field != null) {
button.setEnabled(false); // Or use setClickable(false) if you still want to show the button as not opaque
}
button.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
new Background().execute();
//new Enter().execute();
}
} );
}
一种更好的做法是隐藏按钮而不是禁用它,但是我不知道您需要做什么,因此请使用上面的代码