48

EditText私のページには、2 つのボタンと一緒に多くの要素があります。ユーザーがいずれかのEditTextフィールドに触れて任意のボタンをクリックし、触れたまさにそのフィールドに特定の値を挿入するようにしますEditText。キーパッドを使用した入力は許可されていません。これを行うのを手伝ってください。

4

9 に答える 9

39

これは私にとってはうまくいきます。ブール値を返します。

myEditText.hasFocus()
于 2015-12-23T07:46:32.853 に答える
26

できることの 1 つは、グローバル変数を宣言することです。グローバル変数は、を使用してevalueを通知し、 の値に基づいて、ボタン クリックでテキスト値を edittext に設定できます。あなたが理解した願っています。last selected EditTextonTouchListenerevalue

そのためのコードは次のようになります。

EditText e1,e2;
    Button b1,b2;
    String evalue;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        e1=(EditText)findViewById(R.id.editText1);
        e2=(EditText)findViewById(R.id.editText2);
        b1=(Button)findViewById(R.id.button1);
        b2=(Button)findViewById(R.id.button2);

        e1.setOnTouchListener(new View.OnTouchListener()
        {
            public boolean onTouch(View arg0, MotionEvent arg1)
            {
                evalue="1";
                return false;
            }
        });

        e2.setOnTouchListener(new View.OnTouchListener()
        {
            public boolean onTouch(View arg0, MotionEvent arg1)
            {
                evalue="2";
                return false;
            }
        });
        b1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View arg0) {
                if(evalue=="1")
                {
                    e1.setText("yes");
                }
                if(evalue=="2")
                {
                    e2.setText("yes");
                }
            }
        });


        b2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View arg0) {
                if(evalue=="1")
                {
                    e1.setText("No");
                }
                if(evalue=="2")
                {
                    e2.setText("No");
                }
            }
        });

    }

その論理コーディング..マークまでではありません..より良いものを見つけた場合。それを使用します。ありがとうございました。

于 2013-06-27T12:11:31.420 に答える
8

&をFragment実装してください:OnTouchListenerOnFocusChangeListener

public class AttributesFragment extends Fragment 
                       implements OnTouchListener, OnFocusChangeListener {

次に、次を使用して実装します。

@Override
public boolean onTouch(View view, MotionEvent event) {
    if (view instanceof EditText) {
        view.setOnFocusChangeListener(this); // User touched edittext
    }
    return false;
}

@Override
public void onFocusChange(View v, boolean hasFocus) {

}

作成後にリスナーを設定することを忘れないでくださいEditText

editText.setOnTouchListener(this);

このように、EditTextボックスがデフォルトでフォーカスされていても、ユーザーがフィールドを変更していない場合、onFocusChangeイベントは発生しません。

于 2013-12-18T23:47:28.097 に答える