检查是否已单击按钮

时间:2014-10-21 10:14:32

标签: java android android-layout android-activity parse-platform

在我的活动中,我可以从图库上传图片。 我想在确认之前检查用户是否确实上传了图片。实现这一目标的一种方法是,我想检查是否已点击上传图片按钮。

我还想查看是否已通过以下代码填充了edittext但是正在努力处理图片:

 String name = mName.getText().toString();
        //    Number age = mAge.getText(;
            String headline = mHeadline.getText().toString();

         // age = ((String) age).trim();
            name = name.trim();
            headline = headline.trim();

            if (name.isEmpty() || headline.isEmpty()) {
                AlertDialog.Builder builder = new AlertDialog.Builder(ProfileCreation.this);
                builder.setMessage(R.string.signup_error_message)
                    .setTitle(R.string.signup_error_title)
                    .setPositiveButton(android.R.string.ok, null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }
            else {
                // create the new user!

下面是如何选择图像:

 Button buttonLoadImage = (Button) findViewById(R.id.btnPictureSelect);
    buttonLoadImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
    });

} 

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
                && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            ImageView imageView = (ImageView) findViewById(R.id.profilePicturePreview);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

        }

    }

    private byte[] readInFile(String path) throws IOException {
        // TODO Auto-generated method stub
        byte[] data = null;
        File file = new File(path);
        InputStream input_stream = new BufferedInputStream(new FileInputStream(
                file));
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        data = new byte[16384]; // 16K
        int bytes_read;
        while ((bytes_read = input_stream.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, bytes_read);
        }
        input_stream.close();
        return buffer.toByteArray();

    }

更新

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile_creation);

    feedBack = new FeedbackDialog(this, "AF-46D8F2A319EA-0A");


    RelativeLayout v = (RelativeLayout) findViewById(R.id.main); 

    v.requestFocus();

    Parse.initialize(this, "id", "id");

    mName = (EditText)findViewById(R.id.etxtname);
    mAge = (EditText)findViewById(R.id.etxtage);
    mHeadline = (EditText)findViewById(R.id.etxtheadline);

    male = (RadioButton)findViewById(R.id.rimale);
    female = (RadioButton)findViewById(R.id.rifemale);
    lmale = (RadioButton)findViewById(R.id.rlmale);
    lfemale = (RadioButton)findViewById(R.id.rlfemale);
    seekBarMinimum = (SeekBar) findViewById(R.id.sbseekBarMinimumAge);
    seekBarMaximum = (SeekBar) findViewById(R.id.sbseekBarMaximumAge);
    seekBarDistance = (SeekBar) findViewById(R.id.sbseekBarDistance);
    seekBarActivityDistance = (SeekBar) findViewById(R.id.sbseekBarActivityDistance);


    mConfirm = (Button)findViewById(R.id.btnConfirm);
    mConfirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            findViewById(R.id.btnConfirm).setBackgroundResource(R.drawable.gray_bac);


            String name = mName.getText().toString();
        //    Number age = mAge.getText(;
            String headline = mHeadline.getText().toString();






         // age = ((String) age).trim();
            name = name.trim();
            headline = headline.trim();

            if (name.isEmpty() || headline.isEmpty()) {
                AlertDialog.Builder builder = new AlertDialog.Builder(ProfileCreation.this);
                builder.setMessage(R.string.signup_error_message)
                    .setTitle(R.string.signup_error_title)
                    .setPositiveButton(android.R.string.ok, null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }
            else {
                // create the new user!
                setProgressBarIndeterminateVisibility(true);

                ParseUser currentUser = ParseUser.getCurrentUser();





                if(male.isChecked())
                    gender = "Male";
                else
                    gender = "Female";

                if(lmale.isChecked())
                    lgender = "Male";
                else
                    lgender = "Female";
                age = Integer.parseInt(mAge.getText().toString());

                ParseInstallation installation = ParseInstallation.getCurrentInstallation();
                installation.put("Name", name); 
                installation.put("UserAge", age); 
                installation.put("Headline", headline); 
                installation.put("Gender", gender);
                installation.put("Looking_Gender", lgender);
                installation.put("Minimum_Age", seekBarMinimum.getProgress());
                installation.put("Maximum_Age", seekBarMaximum.getProgress());
                installation.put("Maximum_Distance_Match", seekBarDistance.getProgress());
                installation.put("Maximum_Distance_Activity", seekBarActivityDistance.getProgress());

                installation.saveInBackground();


                currentUser.put("Name", name); 
                currentUser.put("UserAge", age); 
                currentUser.put("Headline", headline); 
                currentUser.put("Gender", gender);
                currentUser.put("Looking_Gender", lgender);
                currentUser.put("Minimum_Age", seekBarMinimum.getProgress());
                currentUser.put("Maximum_Age", seekBarMaximum.getProgress());
                currentUser.put("Maximum_Distance_Match", seekBarDistance.getProgress());
                currentUser.put("Maximum_Distance_Activity", seekBarActivityDistance.getProgress());



                /* This is the section where the images is converted, saved, and uploaded. I have not been able Locate the image from the ImageView, where the user uploads the picture to imageview from either their gallery and later on from facebook */ 
                ImageView myImgView = (ImageView) findViewById(R.id.profilePicturePreview);



                Bitmap bitmap = ((BitmapDrawable) myImgView.getDrawable()).getBitmap();

                // Convert it to byte
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                // Compress image to lower quality scale 1 - 100
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] image = stream.toByteArray();

                // Create the ParseFile
                ParseFile file = new ParseFile("profilePicture.png", image);
                // Upload the image into Parse Cloud
                file.saveInBackground();



                // Create a column named "Profile Picture" and set the string
                currentUser.put("ImageName", "Profile Picture");

                // Create a column named "ImageFile" and insert the image
                currentUser.put("ProfilePicture", file);




                currentUser.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        setProgressBarIndeterminateVisibility(false);

                        if (e == null) {
                            // Success!
                            Intent intent = new Intent(ProfileCreation.this, betaEventsActivity.class);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                        }
                        else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(ProfileCreation.this);
                            builder.setMessage(e.getMessage())
                                .setTitle(R.string.signup_error_message)
                                .setPositiveButton(android.R.string.ok, null);
                            AlertDialog dialog = builder.create();
                            dialog.show();
                        }
                    }
                });
            }
        }
    });



    SeekBar seekBar = (SeekBar) findViewById(R.id.sbseekBarDistance);
    final TextView seekBarValue = (TextView) findViewById(R.id.tvseekBarDistanceValue);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub 
            seekBarValue.setText(String.valueOf(progress));
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

    }); // Add this

    Button mcancel = (Button)findViewById(R.id.btnBack);
    mcancel.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ProfileCreation.this.startActivity(new Intent(ProfileCreation.this, LoginActivity.class));
        }
    });

    SeekBar seekBarActivity = (SeekBar) findViewById(R.id.sbseekBarActivityDistance);
    final TextView seekBarActivityValue = (TextView) findViewById(R.id.tvseekBarActivityDistanceValue);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub 
            seekBarValue.setText(String.valueOf(progress));
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

    }); // Add this






    SeekBar seekBarMinimum = (SeekBar) findViewById(R.id.sbseekBarMinimumAge);
    final TextView txtMinimum = (TextView) findViewById(R.id.tvMinAge);

    seekBarMinimum.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub 
             if (progress <= 18) {
                    seekBar.setProgress(18);
                } else {
                    txtMinimum.setText(String.valueOf(progress));
                }


        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

    }); // Add this

    SeekBar seekBarMaximum = (SeekBar) findViewById(R.id.sbseekBarMaximumAge);
    final TextView txtMaximum = (TextView) findViewById(R.id.tvMaxAge);

    seekBarMaximum.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub 
            txtMaximum.setText(String.valueOf(progress));
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub 
        }

    }); // Add this







    Button buttonLoadImage = (Button) findViewById(R.id.btnPictureSelect);
    buttonLoadImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
    });

} 

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
                && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            ImageView imageView = (ImageView) findViewById(R.id.profilePicturePreview);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

        }

    }

    private byte[] readInFile(String path) throws IOException {
        // TODO Auto-generated method stub
        byte[] data = null;
        File file = new File(path);
        InputStream input_stream = new BufferedInputStream(new FileInputStream(
                file));
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        data = new byte[16384]; // 16K
        int bytes_read;
        while ((bytes_read = input_stream.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, bytes_read);
        }
        input_stream.close();
        return buffer.toByteArray();

    }

1 个答案:

答案 0 :(得分:1)

如果用户在onActivityResult

中选择了图像,则可以将布尔值设置为true
//global variable
boolean imagePicked = false;


//In onActivityResult change its value
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        imagePicked = true;
        //other things
    }
    else {
        imagePicked = false;
        //other things
    }

在最后一个按钮点击检查imagePickedtruefalse,然后相应地继续。

希望它有所帮助。

相关问题