Question: I am getting a Null pointer error at line 127, Can someone tell me why? Its a android dating app. This activity is to change
I am getting a Null pointer error at line 127, Can someone tell me why? Its a android dating app. This activity is to change profile pic.
package com.example.augus.unbdates; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.NavUtils; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ImageView; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.ChildEventListener; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.OnProgressListener; import com.google.firebase.storage.StorageReference; import com.google.firebase.storage.UploadTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuInflater; import android.widget.Toast; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; public class ChooseProfilePic extends AppCompatActivity { private ImageView mProfileImage; private Button mconfirm; private String userId; private String userGender; private FirebaseAuth mAuth; private DatabaseReference mUserDatabase; private Uri filePath; private final int PICK_IMAGE_REQUEST = 71; //Firebase FirebaseStorage storage; StorageReference storageReference; //Method to check usersex for matching public void checkUserSex() { final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); DatabaseReference male_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Male"); male_db.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if(dataSnapshot.getKey().equals(user.getUid())) { userGender = "Male"; } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); DatabaseReference Female_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Female"); Female_db.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if(dataSnapshot.getKey().equals(user.getUid())) { userGender = "Female"; } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_choose_profile_pic); mProfileImage = (ImageView) findViewById(R.id.ProPic); mconfirm = (Button) findViewById(R.id.ChangePic); //Enabling the action bar, Overriding method outside this scope/class. getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Calling checkUserSex method checkUserSex(); mAuth = FirebaseAuth.getInstance(); userId = mAuth.getCurrentUser().getUid(); mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(userGender).child(userId); //String temp = mUserDatabase.getParent().toString(); //mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(userId); //Calling the method to find user gender,method for retriving data /* mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users"); mUserDatabase.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { Log.i(TAG, dataSnapshot.getValue(String.class)); } @Override public void onCancelled(DatabaseError databaseError) { Log.w(TAG, "onCancelled", databaseError.toException()); } }); */ /* ValueEventListener EventListener = new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { Map map = (Map) dataSnapshot.getValue(); //Nullpointer exception userGender = map.get("Gender").toString(); Toast.makeText(ChooseProfilePic.this, userGender, Toast.LENGTH_SHORT).show(); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }; mUserDatabase.addValueEventListener(EventListener); */ //Firebase Sotrage storage = FirebaseStorage.getInstance(); storageReference = storage.getReference(); mProfileImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { chooseImage(); } }); /* mconfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 1); } }); */ mconfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { uploadImage(); } }); } //Immplementing choose pic and upload pic method private void chooseImage() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null ) { filePath = data.getData(); try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); mProfileImage.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } } private void uploadImage() { if(filePath != null) { final ProgressDialog progressDialog = new ProgressDialog(this); progressDialog.setTitle("Uploading..."); progressDialog.show(); StorageReference ref = storageReference.child("profileImages").child(userId).child("images/"+ UUID.randomUUID().toString()); ref.putFile(filePath) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { progressDialog.dismiss(); Toast.makeText(ChooseProfilePic.this, "Uploaded", Toast.LENGTH_SHORT).show(); String downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl().toString(); Map userInfo = new HashMap(); userInfo.put("profileImageUrl", downloadUrl.toString()); mUserDatabase.updateChildren(userInfo); finish(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { progressDialog.dismiss(); Toast.makeText(ChooseProfilePic.this, "Failed "+e.getMessage(), Toast.LENGTH_SHORT).show(); } }) .addOnProgressListener(new OnProgressListener() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot .getTotalByteCount()); progressDialog.setMessage("Uploaded "+(int)progress+"%"); } }); } } //Implementing the back button @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if ( id == android.R.id.home ) { finish(); return true; } return super.onOptionsItemSelected(item); /* switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; default: return super.onOptionsItemSelected(item); } */ } } Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
