Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FATAL EXCEPTION: main
- Process: com.android.octa.memetixs, PID: 15679
- Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system}
- java.lang.IllegalArgumentException: location must not be null or empty
- at com.google.android.gms.common.internal.zzac.zzb(Unknown Source)
- at com.google.firebase.storage.FirebaseStorage.getReference(Unknown Source)
- at com.android.octa.memetixs.ui.fragment.PostFragment$2.populateViewHolder(PostFragment.java:102)
- at com.android.octa.memetixs.ui.fragment.PostFragment$2.populateViewHolder(PostFragment.java:84)
- at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:196)
- at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356)
- at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389)
- at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335)
- at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598)
- at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)
- at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)
- at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
- at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
- at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
- at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)
- at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583)
- at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312)
- at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3844)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1795)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1193)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
- at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1579)
- at android.widget.LinearLayout.onLayout(LinearLayout.java:1488)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16639)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
- at android.widget.Line
- public class PostFragment extends Fragment {
- private View mRootView;
- private FirebaseRecyclerAdapter<Post, PostHolder> mPostAdapter;
- private RecyclerView mPostRecyclerView;
- private User mmUser;
- private Post mmPost;
- public PostFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- mRootView = inflater.inflate(R.layout.fragment_post, container, false);
- FloatingActionButton fab = (FloatingActionButton) mRootView.findViewById(R.id.fabM);
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PostCreateDialog dialog = new PostCreateDialog();
- dialog.show(getFragmentManager(), null);
- }
- });
- init();
- return mRootView;
- }
- private void init() {
- mPostRecyclerView = (RecyclerView) mRootView.findViewById(R.id.recyclerview_post);
- mPostRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
- setupAdapter();
- mPostRecyclerView.setAdapter(mPostAdapter);
- }
- private void setupAdapter() {
- mPostAdapter = new FirebaseRecyclerAdapter<Post, PostHolder>(
- Post.class,
- R.layout.row_post,
- PostHolder.class,
- FirebaseUtils.getPostRef()
- ) {
- @Override
- protected void populateViewHolder(PostHolder viewHolder, final Post model, int position) {
- mmUser = new User();
- mmPost = new Post();
- viewHolder.setNumComments(String.valueOf(model.getNumComments()));
- viewHolder.setNumLikes(String.valueOf(model.getNumLikes()));
- viewHolder.setTime(DateUtils.getRelativeTimeSpanString(model.getTimeCreated()));
- viewHolder.setUsername(mmUser.getUser());
- viewHolder.setPostText(model.getPostText());
- StorageReference storageReference = FirebaseStorage.getInstance()
- .getReference(mmPost.getPostImageUrl());
- Glide.with(getActivity())
- .using(new FirebaseImageLoader())
- .load(storageReference)
- .into(viewHolder.postDisplayImageView);
- viewHolder.postLikeLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onLikeClick(model.getPostId());
- }
- });
- viewHolder.postCommentLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getContext(), CommentActivity.class);
- intent.putExtra(Constants.EXTRA_POST, model);
- startActivity(intent);
- }
- });
- }
- };
- }
- private void onLikeClick(final String postId) {
- FirebaseUtils.getPostLikedRef(postId)
- .addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (dataSnapshot.getValue() != null) {
- //user liked
- FirebaseUtils.getPostRef()
- .child(postId)
- .child("numLikes")
- .runTransaction(new Transaction.Handler() {
- @Override
- public Transaction.Result doTransaction(MutableData mutableData) {
- long num = mutableData.getValue(Long.class);
- mutableData.setValue(num - 1);
- return Transaction.success(mutableData);
- }
- @Override
- public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
- FirebaseUtils.getPostLikedRef(postId)
- .setValue(null);
- }
- });
- } else {
- FirebaseUtils.getPostRef()
- .child(postId)
- .child("numLikes")
- .runTransaction(new Transaction.Handler() {
- @Override
- public Transaction.Result doTransaction(MutableData mutableData) {
- long num = mutableData.getValue(Long.class);
- mutableData.setValue(num + 1);
- return Transaction.success(mutableData);
- }
- @Override
- public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
- FirebaseUtils.getPostLikedRef(postId)
- .setValue(true);
- }
- });
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- public static class PostHolder extends RecyclerView.ViewHolder {
- TextView postOwnerUsernameTextView;
- TextView postTimeCreatedTextView;
- ImageView postDisplayImageView;
- TextView postTextTextView;
- LinearLayout postLikeLayout;
- TextView postNumLikesTextView;
- LinearLayout postCommentLayout;
- TextView postNumCommentsTextView;
- public PostHolder(View itemView) {
- super(itemView);
- postOwnerUsernameTextView = (TextView) itemView.findViewById(R.id.tv_post_username);
- postTimeCreatedTextView = (TextView) itemView.findViewById(R.id.tv_time);
- postDisplayImageView = (ImageView) itemView.findViewById(R.id.iv_post_display);
- postLikeLayout = (LinearLayout) itemView.findViewById(R.id.like_layout);
- postCommentLayout = (LinearLayout) itemView.findViewById(R.id.comment_layout);
- postNumLikesTextView = (TextView) itemView.findViewById(R.id.tv_likes);
- postNumCommentsTextView = (TextView) itemView.findViewById(R.id.tv_comments);
- postTextTextView = (TextView) itemView.findViewById(R.id.tv_post_text);
- }
- public void setUsername(String username) {
- postOwnerUsernameTextView.setText(username);
- }
- public void setTime(CharSequence time) {
- postTimeCreatedTextView.setText(time);
- }
- public void setNumLikes(String numLikes) {
- postNumLikesTextView.setText(numLikes);
- }
- public void setNumComments(String numComments) {
- postNumCommentsTextView.setText(numComments);
- }
- public void setPostText(String text) {
- postTextTextView.setText(text);
- }
- }
- }
- public class FirebaseUtils {
- //==============================================================================================
- // USER REFERENCE
- public static DatabaseReference getUserRef(String email) {
- return FirebaseDatabase.getInstance()
- .getReference(Constants.USERS_KEYS)
- .child(email);
- }
- public static FirebaseUser getCurrentUser() {
- return FirebaseAuth.getInstance().getCurrentUser();
- }
- // POST REFERENCE
- public static DatabaseReference getPostRef() {
- return FirebaseDatabase.getInstance()
- .getReference(Constants.POSTS_KEY);
- }
- public static Query getPostQuery() {
- return getPostRef().orderByChild(Constants.TIME_CREATED_KEY);
- }
- public static DatabaseReference getMyPostRef() {
- return FirebaseDatabase.getInstance().getReference(Constants.MY_POSTS)
- .child(getCurrentUser().getEmail().replace(".", ","));
- }
- // POST LIKED REFERENCE
- public static DatabaseReference getPostLikedRef() {
- return FirebaseDatabase.getInstance()
- .getReference(Constants.POSTS_LIKED_KEY);
- }
- public static DatabaseReference getPostLikedRef(String postId) {
- return getPostLikedRef().child(getCurrentUser().getEmail()
- .replace(".", ","))
- .child(postId);
- }
- // USER ID
- public static String getUid() {
- String path = FirebaseDatabase.getInstance().getReference().push().toString();
- return path.substring(path.lastIndexOf("/") + 1);
- }
- // POST IMAGE REFERENCE
- public static StorageReference getImagesSRef() {
- return FirebaseStorage.getInstance().getReference(Constants.POST_IMAGES);
- }
- // COMMENT REFERENCE
- public static DatabaseReference getCommentRef(String postId) {
- return FirebaseDatabase.getInstance().getReference(Constants.COMMENTS_KEY)
- .child(postId);
- }
- // RECORD
- public static DatabaseReference getMyRecordRef() {
- return FirebaseDatabase.getInstance().getReference(Constants.USER_RECORD)
- .child(getCurrentUser().getEmail().replace(".", ","));
- }
- public static void addToMyRecord(String node,final String id) {
- FirebaseUtils.getMyRecordRef().child(node).runTransaction(new Transaction.Handler() {
- @Override
- public Transaction.Result doTransaction(MutableData mutableData) {
- ArrayList<String> myPostCollection;
- if (mutableData.getValue() == null) {
- myPostCollection = new ArrayList<>(1);
- myPostCollection.add(id);
- mutableData.setValue(myPostCollection);
- } else {
- myPostCollection = (ArrayList<String>) mutableData.getValue();
- myPostCollection.add(id);
- mutableData.setValue(myPostCollection);
- }
- return Transaction.success(mutableData);
- }
- @Override
- public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
- }
- });
- }
- public class PostCreateDialog extends DialogFragment implements View.OnClickListener {
- private static final int RC_PHOTO_PICKER = 1;
- private View mRootView;
- private Post mPost;
- private ProgressDialog mProgressDialog;
- private Uri mSelectedImageUri;
- private ImageView mPostDisplay;
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- mPost = new Post();
- mProgressDialog = new ProgressDialog(getContext());
- mRootView = getActivity().getLayoutInflater().inflate(R.layout.post_create_dialog, null);
- mPostDisplay = (ImageView) mRootView.findViewById(R.id.post_dialog_display);
- mRootView.findViewById(R.id.post_dialog_select_imageview).setOnClickListener(this);
- mRootView.findViewById(R.id.post_dialog_send_imageview).setOnClickListener(this);
- builder.setView(mRootView);
- return builder.create();
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.post_dialog_send_imageview:
- sendPost();
- break;
- case R.id.post_dialog_select_imageview:
- selectImage();
- break;
- }
- }
- private void selectImage(){
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("image/jpeg");
- intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
- startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
- }
- private void sendPost(){
- mProgressDialog.setMessage("Sending post...");
- mProgressDialog.setCancelable(false);
- mProgressDialog.setIndeterminate(true);
- mProgressDialog.show();
- FirebaseUtils.getUserRef(FirebaseUtils.getCurrentUser().getEmail().replace(".", ","))
- .addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- User user = dataSnapshot.getValue(User.class);
- final String postUid = FirebaseUtils.getUid();
- TextView postDialogTextView = (TextView) mRootView.findViewById(R.id.post_dialog_edittext);
- String text = postDialogTextView.getText().toString();
- mPost.setUser(user);
- mPost.setNumComments(0);
- mPost.setNumLikes(0);
- mPost.setTimeCreated(System.currentTimeMillis());
- mPost.setPostId(postUid);
- mPost.setPostText(text);
- if (mSelectedImageUri != null) {
- FirebaseUtils.getImagesSRef()
- .child(mSelectedImageUri.getLastPathSegment())
- .putFile(mSelectedImageUri)
- .addOnSuccessListener(getActivity(),
- new OnSuccessListener<UploadTask.TaskSnapshot>() {
- @Override
- public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
- String url = Constants.POST_IMAGES + "/" + mSelectedImageUri.getLastPathSegment();
- //String downloadUrl = taskSnapshot.getDownloadUrl().toString();
- mPost.setPostImageUrl(url);
- addToMyPostList(postUid);
- }
- });
- } else {
- addToMyPostList(postUid);
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- mProgressDialog.dismiss();
- }
- });
- }
- private void addToMyPostList(final String postUid){
- FirebaseUtils.getPostRef().child(postUid)
- .setValue(mPost);
- FirebaseUtils.getMyPostRef().child(postUid).setValue(true)
- .addOnCompleteListener(getActivity(), new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- mProgressDialog.dismiss();
- dismiss();
- }
- });
- FirebaseUtils.addToMyRecord(Constants.POSTS_KEY, postUid);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == RC_PHOTO_PICKER) {
- if (resultCode == RESULT_OK) {
- mSelectedImageUri = data.getData();
- mPostDisplay.setImageURI(mSelectedImageUri);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement