Java 安卓:等待按钮点击
我必须实现一个类的返回方法。因此,结构非常简单Java 安卓:等待按钮点击,java,android,user-interface,asynchronous,jsch,Java,Android,User Interface,Asynchronous,Jsch,我必须实现一个类的返回方法。因此,结构非常简单 public boolean yesNo(String message){ //return something } 这里的问题是有一个EditText对象和一个按钮,我希望根据用户在EditText中输入的答案返回一个布尔值。所以很自然地,我必须等待用户写入并在完成时单击按钮。我已经尝试在方法内部设置onClicklistener,但是无法将任何内容传递给外部方法 我知道在android中,一切都是异步的,所以我认为你不应该等待用户做一
public boolean yesNo(String message){
//return something
}
这里的问题是有一个EditText对象和一个按钮,我希望根据用户在EditText中输入的答案返回一个布尔值。所以很自然地,我必须等待用户写入并在完成时单击按钮。我已经尝试在方法内部设置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());
}
}
});
}
我已经尝试在方法内部设置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());
}
}
});
}
当屏幕初始化时,在
按钮上放置一个OnClickListener
,例如在onCreate
生命周期方法中。在侦听器的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());
}
});
当屏幕初始化时,在按钮上放置一个OnClickListener
,例如在onCreate
生命周期方法中。在侦听器的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());
}
});
我试着在OnClickListeners-onClick方法内的类中设置一个公共的字符串,但是它告诉我字符串必须是最终的。但当它最后的时候,我不能改变它。这就是为什么它不能与onclick侦听器一起工作的原因。但也许我错过了什么。知道吗?啊,我的错。我在YesNo方法中声明了字符串。到目前为止,我添加了代码。那么这对生命周期有什么影响呢?是否仅在单击按钮后才返回yesNo布尔值?因为如果它以任何一种方式返回,它对meth都没有用方法promptYesNo不会在每次单击goButton时调用,但只有当某个条件为真时,我才知道你的意思,但正如我在@Gex answer中所评论的,我不是调用该提示符的人。它是由另一个对象完成的。因此,我认为这并不能满足我的需要,我试图在OnClickListeners onClick方法内的类中设置一个公共字符串,但它告诉我该字符串必须是最终的。但当它最后的时候,我不能改变它。这就是为什么它不能与onclick侦听器一起工作的原因。但也许我错过了什么。知道吗?啊,我的错。我在YesNo方法中声明了字符串。到目前为止,我添加了代码。那么这对生命周期有什么影响呢?是否仅在单击按钮后才返回yesNo布尔值?因为如果它以任何一种方式返回,它对meth都没有用方法promptYesNo不会在每次单击goButton时调用,但只有当某个条件为真时,我才知道你的意思,但正如我在@Gex answer中所评论的,我不是调用该提示符的人。它是由另一个对象完成的。所以我想这不能满足我的需要谢谢。但是它的工作方式应该是,yesNo方法是从其他地方调用UserInfo对象的,即不是每次按下按钮时都调用。谢谢。但它的工作方式是,在其他地方(不是每次按下按钮时)对另一个UserInfo对象调用yesNo方法。