2016-04-15 247 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