2010-06-02 3 views
2

2 개의 화면이있는 작은 테스트 앱을 만들었습니다. 첫 번째 화면에는 EditText와 Button이 있습니다. 두 번째 화면은 세 개의 정적 항목을 보여주는 단순한 ListActivity입니다. ListActivity는 사용자가 첫 번째 화면에서 Button을 클릭하거나 TextEdit에서 Enter 키를 눌렀을 때 시작됩니다. 이상한 일은 EditText보기에서 Enter 키를 눌러 ListActivity를 시작한 다음 시작 직후 첫 번째 목록 항목을 선택한 경우입니다. 버튼을 두드려 시작한 경우 모든 것이 정상이며 목록 항목이 선택되지 않습니다.EditText 이벤트에서 Listactivity를 시작할 때 첫 번째 목록 항목이 선택되었습니다.

이는 ListActivity를 시작하는 코드입니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.startup); 

    final Button b = (Button)findViewById(R.id.but); 
    b.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startList(); 
     } 
    }); 

    final EditText t = (EditText)findViewById(R.id.in_text); 
    t.setOnEditorActionListener(new OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      startList(); 
      return true; 
     } 
    }); 
} 

public void startList(){ 
    Intent i = new Intent(this, TestList.class); 
    startActivity(i); 
} 

이는 ListActivity

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list); 

     inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     String[] str = {"a", "b", "c"}; 

     ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, str){ 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       View row = 
         null == convertView ? 
         inflater.inflate(R.layout.list_item, null) : 
         convertView; 

       String s = getItem(position); 
       TextView tvid = (TextView)row.findViewById(R.id.word_suggestion_item_text); 
       tvid.setText(s); 

       return row; 
      } 
     }; 

     setListAdapter(adapter); 
    } 

그런 일이 왜 어떤 아이디어의 코드? ListActivity 가가의 EditText 뷰에서 키 를 Enter 키를 눌러 시작 경우

사이먼

답변

1

이상한 것은이고, 다음 첫 번째 목록 항목은 바로 시작 후 선택됩니다. 버튼이 으로 시작되면 모든 것이 정상입니다. - 아니요, 목록 항목이 선택되었습니다.

ListActivity을 시작하기 직전에 하드웨어 입력 (예 : Enter 키)을 사용하면 터치 모드에 있지 않습니다. ListActivity을 시작하기 직전에 터치 스크린을 사용하면 터치 모드가됩니다. 선택 강조 표시는 터치 모드에서 표시되지 않습니다. 자세한 내용은 here을 참조하십시오.

+0

아, 그게 기능이 아니라 버그 야! 이제 완전히 이해가됩니다! 감사합니다. – SimonSays

관련 문제