2015-01-15 47 views
0

我的想法是有一個文本字段,我可以手動輸入名稱。Android微調和編輯文本

此外我有一個名稱列表。如果該列表中東1的名稱存在,則應在EditText的右側出現一個圖標,以便打開Spinner進行選擇。

如果沒有選擇項目EditText保持不變,如果一個項目已被選中EditText將擁有該項目。

到目前爲止我的工作能見度 - 但我的問題是,onNothingSelected似乎根本沒有被解僱。

public class MainActivity extends ActionBarActivity { 

private Spinner spinner; 
private EditText text2; 
private ImageButton button2; 
private String spinner_value = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    spinner = (Spinner)findViewById(R.id.spinner); 

    String[] str = {"","good", "dislike", "like", "hate", "moderate"}; 
    spinner.setPrompt("Set Text"); 
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, str); 
    spinner.setAdapter(list); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
            int arg2, long arg3) { 
      TextView tv = (TextView)arg1; 
      spinner_value = tv.getText().toString(); 
      if(spinner_value.length() == 0) 
      { 
       spinner_value = "Nothing"; 
      } 
      Toast.makeText(getApplicationContext(), spinner_value, Toast.LENGTH_SHORT).show(); 
      spinner = (Spinner) findViewById(R.id.spinner); 
      text2 = (EditText) findViewById(R.id.editText); 
      button2 = (ImageButton) findViewById(R.id.imageButton); 
      text2.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.VISIBLE); 
      spinner.setVisibility(View.INVISIBLE); 
      String myStr = spinner.getSelectedItem().toString(); 
      text2.setText(myStr); 
      text2.requestFocus(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      Toast.makeText(getApplicationContext(), "NothingSelected", Toast.LENGTH_SHORT).show(); 
      spinner = (Spinner) findViewById(R.id.spinner); 
      text2 = (EditText) findViewById(R.id.editText); 
      button2 = (ImageButton) findViewById(R.id.imageButton); 
      text2.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.VISIBLE); 
      spinner.setVisibility(View.INVISIBLE); 
      text2.requestFocus(); 
     } 
    }); 
    } 
} 

回答

0

默認情況下,創建微調控制器時會選擇索引0處的項目。因此,即使用戶實際上沒有做任何事情,也會選擇第一項。您可以通過在onItemSelected()中設置斷點(或其他通知)並在啓動時看到它在沒有用戶執行任何操作的情況下觸發,從而看到這種情況。

對於onNothingSelected()回調觸發,無論選擇哪個項目都必須消失。

+0

在哪種情況下會被觸發?如果我打開微調,並不通過點擊其他地方選擇任何東西,我不是那麼那麼呢? – Kev

+0

否。當您打開微調器時,第一項已被選中。爲了觸發onNothingSelected(),當前選擇的項目必須變爲不可用。例如,視圖設置爲「已完成」。 – iheanyi

+0

好了,現在我明白了。謝謝 – Kev