簡體   English   中英

在不同的聽眾之間切換

[英]switch between different listener

我正在使用手勢監聽器來監視用戶的操作,但是當應用程序彈出對話框時,我不知道如何將手勢監聽器切換為對話框事件並處理事件按鈕(確定並取消),任何人都可以給我一條建議?

偽代碼是這樣的

 public class MainActivity extends FragmentActivity
        implements ConnectionEventListener{
        ......
        // when connection established,
        // pop a diaglog (android native diaglog with listview and its adapter) to ask user to select ok or cancel button
        @Override
        public void onUpdateAlert(final int event, final String message){
        }

        // gesture listener
        // if a dialog pops up, the pose can be used to select OK or cancel
        @Override
        public void onDetected(Hand pose){
        }
}

我的問題不是按鈕偵聽器。 實際上,我有兩個監聽器同時工作,一個監聽事件,另一個監聽姿勢。 當事件到來時,該事件將彈出一個對話框以選擇“確定”或“取消”。 同時,姿勢監聽器仍然有效。 我想知道這種情況何時發生,如何在彈出對話框時使用姿勢偵聽器選擇“確定”或“取消”?

我認為我們需要這樣的東西:

public static void showDialog(SomeActivity someActivity, final SomeCallback callBack {
    final Dialog dialog = new Dialog(someActivity);

    dialog.setContentView(R.layout.dialog_with_buttons);

    // OK button ...
    Button dialogButtonOk = dialog.findViewById(R.id.btn_ok);
    dialogButtonOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            callBack.execute(true);
            dialog.dismiss();
        }
    });

    // Cancel button ...
    Button buttonCancel = dialog.findViewById(R.id.btn_cancel);
    buttonCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callBack.execute(false);
            dialog.dismiss();
        }
    });

    dialog.show();
}

我們可以像這樣從SomeActivity調用showDialog:

showDialog(this, new SomeCallback () {
    @Override
    public void execute(boolean status) {
        if (status) {
            ...
        } else {
            ...
        }
    }
});

和回調接口:

public interface SomeCallback {
    void execute(boolean status);
}

祝好運


偽代碼可以像這樣:

boolean status = false;

@Override
public void onUpdateAlert(final int event, final String message){
    status = true;    
    // pop up the dialog
}

@Override
public void onDetected(Hand pose){
    if(status) {
            status = false;
            ...          
    }
}

暫無
暫無

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

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