簡體   English   中英

按住按鈕 2 秒鍾,然后顯示 AlertDialog

[英]Hold the button for 2 seconds and then show an AlertDialog

我有一個按鈕,當我按住按鈕 2 秒鍾時,我想顯示一個 AlertDialog。

這是我嘗試過的:

btn.setOnTouchListener(new OnSwipeTouchListener(getContext()) {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
            Helper.setTimeout(() -> {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                    builder.setTitle("Message");
                    builder.setMessage(text);
                    builder.show();
                    System.out.println("I am text");
                }
            }, 2000);
        return super.onTouch(view, motionEvent);
    }
}

我的方法 setTimeout():

public static void setTimeout(Runnable runnable, int delay){
    new Handler(Looper.getMainLooper()).postDelayed(runnable, delay);
}

我的問題是,有時 AlertDialog 出現多次,我總是收到這個警告:

W/InputEventReceiver:試圖完成一個輸入事件,但輸入事件接收器已經被釋放。

我究竟做錯了什么?

不知道有沒有更好的解決辦法。 我也試過它

btn.setOnLongClickListener(v -> {
    System.out.println("hold");
    return true;
});

但這不會輸出任何內容。

你可以試試這個

public class MainActivity extends AppCompatActivity {

Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = findViewById(R.id.button);

    button.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Message");
                    builder.setMessage("hello");
                    builder.show();
                }
            }, 2000);


            return false;
        }
    });
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM