2016-07-04 26 views
1

以下所需的變量之前執行保持異步任務是代碼即可獲得來自用戶的關鍵字:我如何從用戶的輸入被存儲在由異步任務

class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 


    private static String keywordToSearch = ""; 

    private static String keyword; 

    public void Search(View view) { 
     EditText nameTextBox = (EditText) view.findViewById(R.id.keyword); 
     Editable editable = nameTextBox.getText(); 
     keyword = editable.toString(); 
    } 

    private void searchKeyWord() 
    { 
     keywordToSearch = keyword; 
    } 

    public static String getKeyword() 
    { 
     return keywordToSearch; 
    } 
} 

還有另一種類實現異步任務,並需要關鍵字作爲其輸入來搜索網頁。

但是應用程序崩潰了,可能是因爲UI和異步線程同時執行,並且異步任務沒有導致應用程序崩潰的輸入。

我怎樣才能讓異步任務執行直到關鍵字被獲取並存儲在變量中?

回答

2

呼叫異步類。

2

AsyncTask的子類可以有帶參數的構造函數。獲取輸入,用它來構造您的AsyncTask,然後執行它。

2

試試這個: -

if(keyword!=null){ 
//call your async task Class here 
//ex:- new Hello.execute(); - Hello is your AsyncTask class 
} 

您也可以通過關鍵字的執行方法內的按鈕點擊new Hello.execute(keyword);

0
EditText nameTextBox = (EditText) view.findViewById(R.id.keyword); 

    nameTextBox.addTextChangedListener(new TextWatcher(){ 
     public void afterTextChanged(Editable s) { 
      // call aynctask here after check 's' length like "s.toString().length() > 0" 
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after){} 
     public void onTextChanged(CharSequence s, int start, int before, int count){} 
    }); 

這裏當EditText上價值的變化,然後你得到後的文本改變監聽器方法,然後你在你的AsyncTask發送該值的價值。