0

ここで問題があります。チェックボックスを使用して編集テキストを無効にしたい。チェックボックスがチェックされている場合、edittext は使用可能です。チェックされていない場合は、無効になります。しかし、私は問題を抱えています。これが私のコードです:誰でもこれをチェックできますか? 日食に応じて、エラーはありません。しかし、携帯電話で実行すると、有効化/無効化が機能しません。

public class Order extends Activity {  
private Button button1;  
private EditText txtbox1,txtbox2;  
private TextView tv;
CheckBox check1;

/** Called when the activity is first created. */  
@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.order);  
    txtbox1= (EditText) findViewById(R.id.editText1);  
    button1 = (Button) findViewById(R.id.button1);  
    tv = (TextView) findViewById(R.id.editText5);  
    txtbox2= (EditText) findViewById(R.id.editText2);
    check1 = (CheckBox)findViewById(R.id.checkcheck);
    button1.setOnClickListener(new clicker());


}
public void addListenerOncheck1() {

    check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                    txtbox1.setFocusable(true);
        txtbox1.setFocusableInTouchMode(true);
                } else {
                    txtbox1.setFocusable(false);
        txtbox1.setFocusableInTouchMode(false);
                }

            }
        });
  }

class clicker implements Button.OnClickListener  
{  
    public void onClick(View v)  
    {  
        String a,b;  
        Integer vis;  
        a = txtbox1.getText().toString();  
        b = txtbox2.getText().toString();  
        vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3;  
        tv.setText(vis.toString());  
    }  
}  

}
4

1 に答える 1

1

ur メソッド addListenerOncheck1(); を呼び出して、Listener をどこにも追加していません。addListenerOncheck1(); を入れてください。OnCreate メソッドの末尾を追加します。

ただし、リスナーを追加するためだけに、これらすべての追加の自作クラスを使用しないことを強くお勧めします。代わりに次のコードを使用して、OnCreate メソッドに追加します。

@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.order);  
    txtbox1= (EditText) findViewById(R.id.editText1);  
    button1 = (Button) findViewById(R.id.button1);  
    tv = (TextView) findViewById(R.id.editText5);  
    txtbox2= (EditText) findViewById(R.id.editText2);
    check1 = (CheckBox)findViewById(R.id.checkcheck);
    button1.setOnClickListener(new clicker());
    check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
            if (isChecked) {
                txtbox1.setEnabled(false);
            } else {
                txtbox1.setEnabled(true);
            }
        }
    });

    button1.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            String a,b;  
            Integer vis;
            a = txtbox1.getText().toString();  
            b = txtbox2.getText().toString();  
            vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3;  
            tv.setText(vis.toString());  
        }         
    });

    // This will make sure the user can only type numbers into the EditTexts:
    txtbox1.setInputType(InputType.TYPE_CLASS_NUMBER);
    txtbox2.setInputType(InputType.TYPE_CLASS_NUMBER);

    // Code to disable editTexts at start once:
    txtbox1.setEnabled(false);
    txtbox2.setEnabled(false);
}
于 2013-08-27T23:32:29.867 に答える