2012-12-04 11 views
5

私のアプリケーションでは、1つの登録画面があります。多くのEditTextsとSpinnersがあります。 私は、登録フィールドを1つずつ行きたいです。Android:EditText NextFocusDownはSpinnerを起動しません

だから私はandroid:imeOptions="actionNext"を適用しました。しかし、それはすべてのスピナーを無視します。それはEditTextにのみ焦点を当てます。私もsetNextFocusDownId()を試しました。これはまた、スピナーを無視します。

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/reportentry11" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <EditText 
      android:id="@+id/numbers" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 

      android:imeOptions="actionNext" 
      android:inputType="phone" 
      > 
      <requestFocus/> 
     </EditText> 

     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/reportentry12" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      > 

      <TextView 
       android:id="@+id/txt_exp" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 

       android:text="EXP:" 
       android:textColor="#000000" 
       android:textSize="12dp" /> 

      <Spinner 
       android:id="@+id/spin_date" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_weight="3" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:nextFocusDown="@+id/spin_year" 
       android:text="date" 
       android:textSize="12dp" /> 

      <Spinner 
       android:id="@+id/spin_year" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_marginRight="5dp" 

        android:nextFocusDown="@+id/cvc" 
       android:text="year" 
       android:textSize="12dp" /> 
     </LinearLayout> 

     <EditText 
      android:id="@+id/cvc" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:hint="@string/reg_label_cvc" 
      android:imeOptions="actionNext" 
      android:inputType="phone" /> 

     <EditText 
      android:id="@+id/fname" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/reg_label_fname" 
      android:imeOptions="actionNext" /> 

     <EditText 
      android:id="@+id/address" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/reg_label_address" 
      android:imeOptions="actionNext" /> 

     <EditText 
      android:id="@+id/city" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/reg_label_city" 
      android:imeOptions="actionNext" 
      android:nextFocusDown="@+id/pr_spin" /> 

     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/reportentry13" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/txt_pr" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="PROV:" 
       android:textColor="#000000" 
       android:textSize="12dp" /> 

      <Spinner 
       android:id="@+id/pr_spin" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="date" 
       android:imeOptions="actionNext" 
       android:textSize="14dp" /> 

      <EditText 
       android:id="@+id/pcode" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:hint="@string/reg_label_pcode" 
       android:imeOptions="actionDone" /> 
     </LinearLayout> 

     <Button 
      android:id="@+id/register_register_button" 
      android:layout_width="wrap_content" 
      android:background="@drawable/green_button_bg" 
      android:onClick="completeClicked" 
      android:text="@string/reg_label_complete" 
      android:textSize="28dp" 
      android:textStyle="bold" /> 
    </LinearLayout> 

スピナーをトリガーする最適な方法を教えてください。

あなたの編集テキストで
+0

私は、このリンクはあなたを助けると思う.... [リンク] [1] [1]:のhttp: //stackoverflow.com/questions/6443212/spinner-did-not-got-focusありがとう... – user4232

答えて

4

、onEditorActionをオーバーライドして、フォーカスを与える(またはあなたのスピナーオープンのようなものは何でも)...

yourEditTXT.setOnEditorActionListener(new OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView view, int actionID, KeyEvent event) { 
      if (actionID == EditorInfo.IME_ACTION_NEXT) { 
       //do your stuff here... 
       return true; 
      } 
      return false; 
    } 
});  

編集12/4:私はあなたがまだ最後のこので苦労してご覧ください あなたが解決策を見つけられなかった場合(または投稿しなかった場合)、またはこれを読んでいる他の人を助けるために、スピナーからテキストを編集するのに役立つかもしれません。

mySpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());    

public class MyOnItemSelectedListener implements OnItemSelectedListener { 

     public void onItemSelected(AdapterView<?> parentview, View v, int position, long id) { 
      // your spinner proces code 
      // then when you are done, 
      yourEditText.setFocusableInTouchMode(true); //if this is not already set 
      yourEditText.requestFocus(); //to move the cursor 
      final InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
      inputMethodManager.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); // this line and the one above will open the soft keyboard if it doesn't already open 
     } 

     public void onNothingSelected(AdapterView<?> arg0) { } 
    }; 
+0

その動作していますが、ポップアップスピナーのリストが表示されていません、スピナーのみがハイライト – Sridhar

+0

@GMRameshとyourWidget.performClick()がトリックを行うべきだと言いました。 – logray

+0

スピナーへのEditText行くためにあなたのコードが動作している、私に – Sridhar

2

あなたのxmlファイルに次のようにします。

<Spinnner 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:nextFocusDown="@+id/youedittextid" 
/> 
+0

@GMラメシュを次のedittextidを追加する必要があります....チェックして、私に知らせて、答えを編集しましたそれは動作していません... – Sridhar

+0

それは私のために働いていた...あなたのコードを徹底的にチェックし、それに応じて変更...それはあなたが上記の答えを貼り付けてコピーする場合は動作するはずです...あなたはそれに応じて変更を加えなければなりません私はあなたのコード –

+0

、また@logray答えを追加... ...、...あなたのコード内で使用すると、2つのスピナーを持っていますLinearLayoutあなたが同じリニアレイアウトにないのEditTextに行くことにしようとしているという点で、ので...私はあなたが唯一の相対的なレイアウトを使用し、それが動作するかどうかをチェックすることをお勧め... –

関連する問題