2016-04-15 132 views
0

我必须实现一个类的返回方法。因此,结构很简单,只要Android:等待按钮点击

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

这里的问题是,有一个EditText对象和一个按钮,我想回报取决于由EditText上用户输入的答案一个布尔值。所以很自然地,我必须等待用户写完后点击按钮。我已经尝试在方法内部设置onClicklistener,但之后我无法将任何内容传递给外部方法。

我知道在android中一切都是异步的,所以我不应该等待用户做些什么,但在这种情况下,我没有其他的想法。此外,我正在实施的方法是Jsch库的UserInfo类。从我所了解的这个UserInfo是为用户交互而设计的,所以我想它会以某种方式通过调用yesNo方法来“提示”用户,然后“等待”用户作出反应。有任何想法吗?如果有人向我解释我的逻辑是否有错误,我也会很高兴。我对使用AsynTask或runnables不太有信心,但我认为它与此有关。

The only available documentation of UserInfo class

非常感谢!

编辑:到目前为止的代码:

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; 
    } 
} 

回答

1

我已经尝试过建立一个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()); 
       } 
      } 
     }); 
} 
+0

了我所是设置在OnClickListeners的onClick方法中的类的字符串这就是公众,但随后告诉我,该字符串必须是最后的。但是,当它的最后我不能改变它。这就是为什么它不适用于onClicklistener。但也许我错过了一些东西。任何想法? – Suppenkasper

+0

请发表您的代码 –

+0

Ahh my bad。我在YesNo方法中声明了String。 – Suppenkasper

1

onCreate生命周期法沽上ButtonOnClickListener当屏幕被初始化,例如。在收听者的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()); 
    } 
}); 
+0

谢谢。但是它应该工作的方式是在别的地方,即不是每次按下按钮时,在其他用户的UserInfo对象上调用yesNo方法。 – Suppenkasper