Включить кнопку после определенного периода времени, повторяющегося

Avinash jain спросил: 12 мая 2018 в 03:47 в: java

Я использовал эту функцию, чтобы сначала отключить мою кнопку, но как включить через определенный период времени

button.setClickable(false);

На самом деле пытаюсь создать кнопку для повторной отправки otp, чтобы изначально ее нужно было отключить, но включите через определенный период времени.

это мой класс otp.java

package com.avinashjain.hp.cc;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Button;import java.util.Timer;
import java.util.TimerTask;public class Otp extends AppCompatActivity {    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_otp);        final ProgressBar simpleProgressBar = (ProgressBar) 
        findViewById(R.id.simpleProgressBar);
        Button startButton = (Button) findViewById(R.id.button);
        // perform click event on button
        startButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // visible the progress bar
                simpleProgressBar.setVisibility(View.VISIBLE);
            }
        });    }}

Это файл activity_otp.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Otp"
    android:orientation="vertical"
    >    <com.goodiebag.pinview.Pinview
        android:id="@+id/pinview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        app:cursorVisible="false"
        app:forceKeyboard="true"
        app:hint="0"
        app:inputType="text"
        app:layout_constraintEnd_toEndOf="parent"
        app:password="false"
        app:pinBackground="@drawable/example_drawable"
        app:pinHeight="35dp"
        app:pinLength="7"
        app:pinWidth="32dp"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteY="169dp" />    <ProgressBar
        android:id="@+id/simpleProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="160dp"
        android:visibility="invisible" />    <Button
        android:id="@+id/button"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:text="@string/verify_otp"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteX="148dp"
        tools:layout_editor_absoluteY="258dp" />    <Button
        android:id="@+id/but_resend"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="125dp"
        android:layout_marginTop="20dp"
        android:text="@string/resend_otp"        /></LinearLayout>

stacktrace

mBtn1.setEnabled(false); // The button is initially disabled //
                    Timer buttonTimer = new Timer();
                    buttonTimer.schedule(new TimerTask() {                        @Override
                        public void run() {
                            runOnUiThread(new Runnable() {                                @Override
                                public void run() {
                                    mBtn1.setEnabled(true); // The button is enabled by the timer afte 5 seconds //
                                }
                            });
                        }
                    }, 5000); // Set your time period here //

Я хочу, чтобы эта кнопка повторялась до определенного количества раз

Thanxin advance


1 ответ

Есть решение
Abhi ответил: 13 мая 2018 в 09:16

Вы можете отключить кнопку в течение определенного периода времени с помощью функции timer. Вот пример:

public class Otp extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_otp);    final ProgressBar simpleProgressBar = (ProgressBar) 
    findViewById(R.id.simpleProgressBar);
    Button startButton = (Button) findViewById(R.id.button);
    // perform click event on button
    startButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // visible the progress bar
            simpleProgressBar.setVisibility(View.VISIBLE);
        }
    });// Your Resend OTP Button Code is below //Button ResendButton = (Button) findViewById(R.id.but_resend);
ResendButton.setEnabled(false); // The button is initially disabled //
                        Timer buttonTimer = new Timer();
                        buttonTimer.schedule(new TimerTask() {                            @Override
                            public void run() {
                                runOnUiThread(new Runnable() {                                    @Override
                                    public void run() {
                                        ResendButton.setEnabled(true); // The button is enabled by the timer after 5 seconds //
                                    }
                                });
                            }
                        }, 5000); // Set your time period here //
}}
Avinash jain ответил: 12 мая 2018 в 03:59
Спасибо, Abhi за помощь, пожалуйста, скажите мне, как я могу отобразить это время, оставшееся до включения кнопки?
Abhi ответил: 12 мая 2018 в 04:02
Чтобы отобразить время обратного отсчета, вы можете использовать функцию CountDownTimer.
Avinash jain ответил: 12 мая 2018 в 04:07
Спасибо Абхи за вашу помощь;)
Abhi ответил: 13 мая 2018 в 07:24
Добавьте полное действие как редактирование на свой вопрос. Также добавьте stacktrace.
Avinash jain ответил: 13 мая 2018 в 08:02
Я отредактировал вопрос, пожалуйста, посмотрите