Отключить кнопку при запуске деятельности - PullRequest
0 голосов
/ 03 октября 2018

У меня есть некоторое значение, связанное с моей кнопкой, которое связано с конкретным полем в моей базе данных.

Как отключить кнопку (без щелчка), если поле не пустое.

Я пытался сделать это:

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 );
            }
        }
    }
}

В этом коде: Здесь, когда начинается действие, кнопка все еще включена, и чтобы отключить ее, я должен нажать на нее.

Пожалуйста, носите мой английский.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018
@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();
        }
    } );

}

Лучше всего прятать кнопку вместо ее отключения, но я не знаю, что вам нужно делать, поэтому используйте приведенный выше код

0 голосов
/ 03 октября 2018

Android предоставляет два способа достижения того же самого -

1. button.setClickable(false)

Кнопка не будет реагировать на любые события щелчка, если вы используете это.

2. button.setEnabled(false)

Использование этого не только не кликабельно, но это также визуально указывает на то, что кнопка отключена.

И на основе вашей нулевой проверки (условия) вы можете легко добиться этого.Благодарю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...