[英]Android: Wait for button click
我必須實現一個類的返回方法。 所以結構很簡單
public boolean yesNo(String message){
//return something
}
這里的問題是有一個EditText對象和一個Button,我想根據用戶在EditText中輸入的答案返回一個布爾值。 因此,我自然不得不等待用戶編寫並在完成后單擊Button。 我已經嘗試在方法內部設置onClicklistener,但是我將無法將任何東西傳遞給外部方法。
我知道在android中一切都是異步的,因此您不應該等待用戶做某事,但是在這種情況下,我沒有其他想法。 同樣,僅供參考,我正在實現的方法屬於Jsch庫的UserInfo類。 據我了解,該UserInfo是為用戶交互而設計的,因此我認為它可以通過調用yesNo方法然后“等待”用戶做出反應來以某種方式管理“提示”用戶。 有任何想法嗎? 如果有人向我解釋我的邏輯上是否有錯誤,我也很高興。 我對使用AsynTask或runnables不太有信心,但我認為這與此有關。
非常感謝!
編輯:到目前為止的代碼:
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.