2016-04-15 23 views
0

私はクラスのリターンメソッドを実装する必要があります。だから、構造がAndroid:ボタンをクリックするのを待つ

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

のと同じくらい簡単ですここでの問題は、そこのEditTextオブジェクトとボタンがあると私はのEditTextでユーザーが入力した答えに応じて、ブール値を返したいということです。だから当然、私は彼が終了するときにユーザーがボタンをクリックして書くのを待つ必要があります。メソッド内でonClickListenerを設定しようとしましたが、外側のメソッドに何も渡せません。

私は、すべてが非同期であることを知っています。私はあなたが何かをするのを待つべきではありませんが、私は他のアイデアはありません。またFYIでは、実装しているメソッドはJschライブラリのUserInfoクラスのものです。私が理解したところでは、このUserInfoはユーザーとのやりとりのために設計されているので、yesNoメソッドを呼び出すことによってユーザーに「プロンプト」を管理し、ユーザーが反応するのを待っていると考えました。何か案は?私の論理に何らかの誤りがあると誰かが私に説明してくれれば嬉しいです。私はAsynTaskまたはrunnablesの使用には自信がありませんが、私はそれがこれと何か関係があると思います。

The only available documentation of UserInfo class

どうもありがとう!

EDIT:これまでのコード:

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メソッド内でクラスにパブリックthatsの文字列を設定しましたが、それは文字列が最終なければならないことを私に伝えます。しかし、最終的に私はそれを変更できません。なぜそれがonClickListenerで動作しなかったのかしかし、多分私は何かを逃した。何か案が? – Suppenkasper

+0

あなたのコードを投稿してください –

+0

ああ私の悪いです。私はYesNoメソッドの中でStringを宣言しました。 – Suppenkasper

1

画面がonCreateライフサイクルの方法で、たとえば、初期化されるときにButtonOnClickListenerを置きます。リスナーのonClickメソッドではyesNoメソッドをEditTextというコンテンツで呼び出すことができます。

画面の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

ありがとう。しかし、それが動作するはずの方法は、ボタンが押されるたびに、そうでないelseからUserInfoオブジェクトに対してyesNoメソッドが呼び出されるということです。 – Suppenkasper

関連する問題