簡體   English   中英

Android:等待按鈕單擊

[英]Android: Wait for button click

我必須實現一個類的返回方法。 所以結構很簡單

public boolean yesNo(String message){
    //return something
}

這里的問題是有一個EditText對象和一個Button,我想根據用戶在EditText中輸入的答案返回一個布爾值。 因此,我自然不得不等待用戶編寫並在完成后單擊Button。 我已經嘗試在方法內部設置onClicklistener,但是我將無法將任何東西傳遞給外部方法。

我知道在android中一切都是異步的,因此您不應該等待用戶做某事,但是在這種情況下,我沒有其他想法。 同樣,僅供參考,我正在實現的方法屬於Jsch庫的UserInfo類。 據我了解,該UserInfo是為用戶交互而設計的,因此我認為它可以通過調用yesNo方法然后“等待”用戶做出反應來以某種方式管理“提示”用戶。 有任何想法嗎? 如果有人向我解釋我的邏輯上是否有錯誤,我也很高興。 我對使用AsynTask或runnables不太有信心,但我認為這與此有關。

UserInfo類的唯一可用文檔

非常感謝!

編輯:到目前為止的代碼:

public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {

    public Button goButton = (Button) MainActivity.contentView.findViewById(R.id.startSSH);

    public EditText editText = (EditText) MainActivity.contentView.findViewById(R.id.commandSSH);

    public boolean yesNo = false;

    public boolean promptYesNo(String str) {
        goButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                String answer = editText.getText().toString();
                if(answer.equals("yes")){yesNo = true;}
                else {yesNo = false;}
            }
        });
        return yesNo;
    }
}

我已經嘗試在方法內部設置一個onClicklistener,但是那樣我將無法將任何內容傳遞給外部方法。

您想傳遞給外部方法什么? 您可以創建類變量以使其在整個類中可用。

promptYesNo方法:

public void promptYesNo(String s) {
 if(s.equals("Yes") //do something
 else if(s.equals("No") //do something
}

通過以下方式更改代碼:

public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {

    public Button goButton = (Button) MainActivity.contentView.findViewById(R.id.startSSH);

    public EditText editText = (EditText) MainActivity.contentView.findViewById(R.id.commandSSH);
        goButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                if (prompt) {
                promptYesNo(editText.getText().toString());
                }
            }
        });
}

初始化屏幕時,例如在onCreate生命周期方法上,將OnClickListener放在Button上。 在偵聽器的onClick方法中,可以使用EditText內容調用yesNo方法。

在屏幕的onCreate方法上嘗試這種方式:

mButton = (Button)findViewById(R.id.my_button);
mEditText = (EditText) findViewById(R.id.my_edittext);

mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        yesNo(mEditText.getText().toString());
    }
});

暫無
暫無

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

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