2017-04-26 18 views
0

私はユーザにテキストを編集テキストに入力させようとしています。ユーザーがEnterキーを押すと、テキストを編集テキストから取り出してArrayListに追加します。編集テキストからkeyEventを制御する際に問題が発生しています。処理editTextでEnterキーを押す

public class MainActivity extends Activity { 
ArrayList<String> array_list; 
ListAdapter lv; 
ListView list; 
EditText edittext; 

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

    array_list = new ArrayList<String>(); 
    edittext = (EditText) findViewById(R.id.textView); 
    lv = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array_list); 
    list = (ListView) findViewById(R.id.lstView); 

    list.setAdapter(lv); 
    edittext.requestFocus(); 

    edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      boolean handled = false; 
      if (actionId == EditorInfo.IME_ACTION_GO) { 
       array_list.add(edittext.getText().toString()); 
       edittext.setText(""); 
       edittext.requestFocus(); 
      } 
      return handled; 
     } 
    }); 
} 
} 

私は、ユーザがenterを押すと、フィールドからテキストを受け取り、それをarrayListに追加する必要があります。次に、テキストフィールドからテキストを消去し、再びフォーカスを与えます。

+1

あなたのコードを表示してください... IME: – Christopher

+0

私は、人々がonKeyListenersとtextWatchersを使用するのを見ました。私はちょうどどれが使いやすく、どのように実装するのだろうと思っています。 –

+0

彼らは実際には違うことをします。 'OnKeyListener'は特定のキーボードキーを聴いて、その時に動作します。一方、' TextWatcher'は新しいテキストを受け取り、 'EditText'が複数行に設定されていない限り、おそらく\ n文字を受け取りません。それにもかかわらず、私はOnKeyListenerが最良のアプローチであると信じています。 –

答えて

2
editText.setOnEditorActionListener(new OnEditorActionListener() { 
@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
    boolean handled = false; 
    if (actionId == EditorInfo.IME_ACTION_GO) { 
     //Perform your Actions here. 

    } 
    return handled; 
    } 
});` 

とあなたのXMLで

あなたはこれまで、この <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text|textUri" android:imeOptions="actionGo" android:imeActionId="666" android:imeActionLabel="Some Label" android:maxLines="1"/>

キーのようなものがアンドロイドを含むXML線であるのですか?あなたの問題を推測するのは難しいです。

+0

私は自分のコードにそれらの両方を実装しており、コードが入力ボタンを押すと実行されない –

+0

どうやらあなたはアンドロイドを指定する必要があります:maxLines = "1"、それ以外の場合は新しい行コマンドを入力するだけです。多分あなたが使用しているキーボードや何かに関連しているかもしれませんが、複数行の編集文が必要ない場合は、この方法で使用することをお勧めします。私はテストし、それは私の最後に動作するようだ。私は答えを編集した – bogdanN

関連する問題