How to get user to set image in image view from gallery than upload to parse

172 views
Skip to first unread message

papich...@gmail.com

unread,
Aug 16, 2016, 5:58:25 PM8/16/16
to back{4}app
Hey guys, i been having some trouble trying to figure this out. I'm able to manually set a drawable in the imageview in xml and that would upload with no issues during user registration. but as soon as i remove that source from the image view and user selcts profile pic to upload, app forcecloses. please check out my code below, any help would be greatly appreciated.  



package com.darkkness.androiddeveloper.darknessensues.LoginActivity;

/**
* Created by arindam on 10/6/16.
*/

import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatButton;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.darkkness.androiddeveloper.darknessensues.R;
import com.darkkness.androiddeveloper.darknessensues.NetworkCheck.NetworkCheck;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import com.parse.SignUpCallback;
import com.squareup.picasso.Picasso;

import java.io.ByteArrayOutputStream;


public class SignupActivity extends AppCompatActivity implements View.OnClickListener {

EditText etName, etEmail, etPassword;
AppCompatButton btnSignup;
ProgressDialog progressDialog;
ImageView profylpic;
private static int RESULT_LOAD_IMAGE = 1;
private static int SELECT_PICTURE = 1;
ParseFile file;


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


profylpic = (ImageView) findViewById(R.id.ProfilePic);
etName = (EditText)findViewById(R.id.input_name);
etEmail = (EditText)findViewById(R.id.input_email);
etPassword = (EditText)findViewById(R.id.input_password);
btnSignup = (AppCompatButton)findViewById(R.id.btn_signup);
btnSignup.setOnClickListener(this);


profylpic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}
});

memberimage();

}


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

if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {

//Get ImageURi and load with help of picasso
//Uri selectedImageURI = data.getData();

Picasso.with(SignupActivity.this).load(data.getData()).noPlaceholder().centerCrop().fit()
.into((ImageView) findViewById(R.id.ProfilePic));
}

}

}

private void memberimage() {
try {




Bitmap image = ((BitmapDrawable)profylpic.getDrawable()).getBitmap();
profylpic.setImageBitmap(image);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
final byte[] byteArray = stream.toByteArray();
file = new ParseFile("myimage.png", byteArray);
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (null == e)

signup();
}
});
}catch (Exception e) {

Log.e("YOUR_APP_LOG_TAG", "I got an error", e);

}

}


@Override
public void onClick(View v) {

if(v==btnSignup)
{

signup();
}

}


public void signup() {


final String name = etName.getText().toString();
final String email = etEmail.getText().toString();
final String password = etPassword.getText().toString();


if(NetworkCheck.isNetworkAvailable(this)) {

if (validate()) {
progressDialog = ProgressDialog.show(this, "", getString(R.string.dialog_msg), true);
final ParseUser user = new ParseUser();
user.put("Name", name);
user.setUsername(email);
user.setEmail(email);
user.setPassword(password);
user.put("ProfilePic", file);

user.signUpInBackground(new SignUpCallback() {

public void done(ParseException e) {
if (e == null) {



Toast.makeText(getApplicationContext(), getResources().getString(R.string.account_created), Toast.LENGTH_SHORT).show();
finish();
}

else {
Toast.makeText(getApplicationContext(),
"Sign up Error", Toast.LENGTH_LONG)
.show();

Log.e("YOUR_APP_LOG_TAG", "I got an error", e);

}
}
});
progressDialog.dismiss();
}
}else
{

Toast.makeText(getApplicationContext(), getResources().getString(R.string.noInternet), Toast.LENGTH_SHORT).show();

}
}


public boolean validate() {
boolean valid = true;

String name = etName.getText().toString();
String email = etEmail.getText().toString();
String password = etPassword.getText().toString();


if (name.isEmpty() || name.length() < 3) {
etName.setError("at least 3 characters");
valid = false;
} else {
etName.setError(null);
}

if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
etEmail.setError("enter a valid email address");
valid = false;
} else {
etEmail.setError(null);
}

if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
etPassword.setError("between 4 and 10 alphanumeric characters");
valid = false;
} else {
etPassword.setError(null);
}
return valid;
}
}






08-16 17:51:23.191 5064-5064/com.darkkness.androiddeveloper.darknessensues E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                             Process: com.darkkness.androiddeveloper.darknessensues, PID: 5064
                                                                                             java.lang.IllegalArgumentException: value may not be null.
                                                                                                 at com.parse.ParseObject.performPut(ParseObject.java:2860)
                                                                                                 at com.parse.ParseObject.put(ParseObject.java:2851)
                                                                                                 at com.parse.ParseUser.put(ParseUser.java:424)
                                                                                                 at com.darkkness.androiddeveloper.darknessensues.LoginActivity.SignupActivity.signup(SignupActivity.java:152)
                                                                                                 at com.darkkness.androiddeveloper.darknessensues.LoginActivity.SignupActivity.onClick(SignupActivity.java:129)
                                                                                                 at android.view.View.performClick(View.java:5702)
                                                                                                 at android.widget.TextView.performClick(TextView.java:10888)
                                                                                                 at android.view.View$PerformClick.run(View.java:22533)
                                                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                                 at android.os.Looper.loop(Looper.java:158)
                                                                                                 at android.app.ActivityThread.main(ActivityThread.java:7229)
                                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)


Davi Macêdo

unread,
Aug 18, 2016, 2:15:37 PM8/18/16
to back{4}app
It seems that some of your var is null. Maybe "file". Which are the lines 129 an 152?
Reply all
Reply to author
Forward
0 new messages