2012-03-19 2 views
5

私のアプリケーションに5つの編集テキストがあります。私はまた、 "Next"と "Previous"という2つのボタンを持っています。今度は、対応するボタンをクリックしてビューを動的に作成するときに、次と前の編集テキストフィールドを選択します。これを行う方法はありますか?次と前を選択する方法ビュー内のテキストを編集する

+1

**のrequestFocus()* * – ngesh

+0

対応するボタンがタッチされたときに、ある編集テキストから次/前へフォーカスを変更したいのですか? –

+0

@ sandy-提案をありがとう。上記は私のサンプルアプリケーションです。私の実際のプロジェクトでは50近くのテキストフィールドが編集されているので、各フィールドのリクエストフォーカスは非常に複雑です。これを行う簡単な方法はありますか? – Sniper

答えて

11
btnNext.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusDownId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Next"); 
     } 
    } 
}); 

btnBack.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusUpId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Back"); 
     } 
    } 
}); 

これは、あなたがフォーカスを設定する必要がXMLであります注文

<EditText 
    android:id="@+id/et1" 
    android:nextFocusDown="@+id/et2" 
    android:nextFocusUp="@+id/et2" 
    ....../> 

<EditText 
    android:id="@+id/et2" 
    android:nextFocusDown="@+id/et1" 
    android:nextFocusUp="@+id/et1" 
    ...../> 

編集

あなたは、あなたが次の焦点に設定する方法を下記使用すべき動的なビューを作成する場合は

setNextFocusDownId(id) 
setNextFocusUpId(id); 
+0

私はこれをXLMコードで使うことができますが、私は実行時にテキストを編集していますので、これはできません。なにか提案を。 – Sniper

+1

私は自分の答えを更新しました – Dharmendra

+0

ありがとうございます。 – Sniper

3

あなたlayout.xmlであなたのEditTextの属性で

android:nextFocusLeft 

android:nextFocusRight 

android:nextFocusUp 

android:nextFocusDown 

をご利用ください。

それを使用する方法の詳細についてはandroid:nextFocusDown="@id/myNextEditText"

this link.

+0

ボタンのクリックイベントでこれをどのように使用できますか? – Sniper

+0

私の更新された答えを確認してください、私はフォローするリンクを与えました。 ビューを動的に生成する場合、つまり.javaファイルを使用する場合は、私の2番目の答えを参照することができます。 – Rajkiran

1

てみてください - あなたが使用することはできません

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_next : 
      if(editText1.hasFocus()){ 
       editText2.requestFocus(); 
      }else if(editText2.hasFocus()){ 
       editText3.requestFocus(); 
      } 
      break; 
     case R.id.btn_previous : 
      if(editText2.hasFocus()){ 
       editText1.requestFocus(); 
      }else if(editText3.hasFocus()){ 
       editText2.requestFocus(); 
      } 
      break; 
    } 
} 
+0

構文が間違っています(editText1!.hasFocus())。これは(!editText1.hasFocus())でなければなりません。あなたのロジックによると、それはedittext1とedittext2だけに焦点を当てます – Dharmendra

+0

私に知らせてくれてありがとう。それは絶対にタイプミス(およびコピー貼り付け)でした。それは実際には構文エラーです。編集されました。 – Rajkiran

関連する問題