2015-01-15 4 views
0

내 아이디어는 수동으로 이름을 입력 할 수있는 텍스트 필드를 갖는 것입니다.안드로이드 회 전자 및 editText

또한 이름 목록이 있습니다. 해당 목록에 동쪽 1 이름이있는 경우 Spinner을 열어 선택을 제공하기 위해 EditText 오른쪽에 아이콘이 나타납니다.

항목이 선택되지 않은 경우 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

그러면 어떤 경우에 트리거됩니까? Spinner를 열고 다른 곳을 클릭하여 아무것도 선택하지 않으면 나는 그렇지 않습니다. – Kev

+0

아니요. 회 전자를 열면 첫 번째 항목이 이미 선택되어 있습니다. onNothingSelected()를 트리거하려면 현재 선택한 항목을 사용할 수 없게 설정해야합니다. 예를 들어보기는 Gone으로 설정됩니다. – iheanyi

+0

이제 알았습니다. 감사 – Kev

관련 문제