首页 > 解决方案 > 活动开始时禁用按钮

问题描述

我有一些与我的按钮相关联的值,它与我的数据库中的特定字段相关联。

如果字段不是 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 );
            }
        }
    }
}

在这段代码中:当活动开始时,按钮仍然处于启用状态,要禁用它,我必须单击它。

请露出我的英语。

谢谢你的帮助。

标签: androidbutton

解决方案


Android 提供了两种实现相同的方法 -

1. button.setClickable(false)

如果您使用它,按钮将不会响应任何点击事件。

2. button.setEnabled(false)

使用它不仅不可点击,而且还直观地表明该按钮已禁用。

并且根据您的空检查(条件),您可以轻松实现这一点。谢谢。


推荐阅读