在onCreate()中添加Button setOnClickListener后,输入过滤器不再起作用

时间:2012-12-10 07:38:28

标签: android android-intent android-activity android-camera

我的活动基本上都包含所有表单组件。 以前它只是在EditText框上应用了一些基本的文本过滤,这些工作正常,直到我添加了一个功能来点击并使用内置相机的应用程序保存图片。

现在,“拍照”部分工作正常,但前两个Edittext框中提供的输入未被过滤。

我在这里遗漏了什么吗?
此外,是否一个活动的onCreate方法只能有一个setonclick监听器?

谢谢..
这是我的活动的代码:

public class Ques1 extends Activity {
    private EditText outletEdit;
    private EditText ownerEdit;
    private EditText phone1Edit;
    private EditText phone2Edit;
    private EditText phone3Edit;
    private EditText phone4Edit;
    private EditText cityEdit;
    private EditText stateEdit;
    private EditText MrktAreaEdit;
    private RadioButton ownVehYes;
    private RadioButton ownVehNo;

    private static int TAKE_PICTURE = 1;
    private Uri outputFileUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ques1);

        Button outletPic = (Button) findViewById(R.id.Button01_outletpic);
        outletPic.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                TakePhoto();
            }
        });

        //CUSTOM INPUTFILTER HERE 2.0 
        InputFilter filter = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

                if (source instanceof SpannableStringBuilder) {
                    SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder)source;
                    for (int i = end - 1; i >= start; i--) { 
                        char currentChar = source.charAt(i);
                         if (!Character.isLetter(currentChar) && !Character.isSpaceChar(currentChar)) {    
                             sourceAsSpannableBuilder.delete(i, i+1);
                         }     
                    }
                    return source;
                } else {
                    StringBuilder filteredStringBuilder = new StringBuilder();
                    for (int i = 0; i < end; i++) { 
                        char currentChar = source.charAt(i);
                        if (Character.isLetter(currentChar) || Character.isSpaceChar(currentChar)) {    
                            filteredStringBuilder.append(currentChar);
                        }     
                    }
                    return filteredStringBuilder.toString();
                }
            }
        };
        this.outletEdit = (EditText) findViewById(R.id.editText1_outlet);
        this.outletEdit.setFilters(new InputFilter[]{filter}); 
        this.ownerEdit = (EditText) findViewById(R.id.editText1_owner);
        this.ownerEdit.setFilters(new InputFilter[]{filter}); 
        //this.cityEdit = (EditText) findViewById(R.id.editText1_owner);
        //this.cityEdit.setFilters(new InputFilter[]{filter}); 

        // LENGTH INPUTFILTERS HERE
        InputFilter[] FilterArray = new InputFilter[1];
        FilterArray[0] = new InputFilter.LengthFilter(25);
        this.outletEdit.setFilters(FilterArray);
        this.ownerEdit.setFilters(FilterArray);



        //ownVehYes.setOnClickListener = (RadioButton) findViewById(R.id.radio0);

        this.ownVehYes = (RadioButton) findViewById(R.id.radio0);
        this.ownVehNo = (RadioButton) findViewById(R.id.radio1);

        OnClickListener own_veh_yes_listener = new OnClickListener (){
             public void onClick(View v) {

                 final AlertDialog.Builder alert = new AlertDialog.Builder(Ques1.this);
                 alert.setTitle("How many?");
                    final EditText input = new EditText(Ques1.this);
                    //input.setFilters(FilterArray2); //need filter for "how many?..veh field"
                    alert.setView(input);
                    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            String howmany_veh_value = input.getText().toString().trim();
                            Toast.makeText(getApplicationContext(), howmany_veh_value, Toast.LENGTH_SHORT).show(); //test toast is here
                        }
                    });

                    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ownVehNo.setChecked(true);
                            dialog.cancel();
                        }
                    });
                    alert.show(); 

             }
            };
            ownVehYes.setOnClickListener(own_veh_yes_listener);

    }

    private void TakePhoto() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File(Environment.getExternalStorageDirectory(), "test.jpg");

        outputFileUri = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
        startActivityForResult(intent, TAKE_PICTURE);

    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data){

        if (requestCode == TAKE_PICTURE && resultCode == Activity.RESULT_OK){
            //ShowMessage(outputFileUri.toString());
            if(data!=null){
            Toast.makeText(getApplicationContext(), outputFileUri.toString(), Toast.LENGTH_SHORT).show();
            }
        }

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_ques1, menu);
        return true;
    }


}

0 个答案:

没有答案