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方法。