Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.70 KB | None | 0 0
  1. FATAL EXCEPTION: main
  2. Process: com.android.octa.memetixs, PID: 15679
  3. Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system}
  4. java.lang.IllegalArgumentException: location must not be null or empty
  5. at com.google.android.gms.common.internal.zzac.zzb(Unknown Source)
  6. at com.google.firebase.storage.FirebaseStorage.getReference(Unknown Source)
  7. at com.android.octa.memetixs.ui.fragment.PostFragment$2.populateViewHolder(PostFragment.java:102)
  8. at com.android.octa.memetixs.ui.fragment.PostFragment$2.populateViewHolder(PostFragment.java:84)
  9. at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:196)
  10. at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356)
  11. at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389)
  12. at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335)
  13. at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598)
  14. at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)
  15. at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)
  16. at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
  17. at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
  18. at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
  19. at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)
  20. at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583)
  21. at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312)
  22. at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3844)
  23. at android.view.View.layout(View.java:16639)
  24. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  25. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
  26. at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
  27. at android.view.View.layout(View.java:16639)
  28. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  29. at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1795)
  30. at android.view.View.layout(View.java:16639)
  31. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  32. at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
  33. at android.view.View.layout(View.java:16639)
  34. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  35. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
  36. at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
  37. at android.view.View.layout(View.java:16639)
  38. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  39. at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
  40. at android.view.View.layout(View.java:16639)
  41. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  42. at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1193)
  43. at android.view.View.layout(View.java:16639)
  44. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  45. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
  46. at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
  47. at android.view.View.layout(View.java:16639)
  48. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  49. at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
  50. at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1579)
  51. at android.widget.LinearLayout.onLayout(LinearLayout.java:1488)
  52. at android.view.View.layout(View.java:16639)
  53. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  54. at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
  55. at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
  56. at android.view.View.layout(View.java:16639)
  57. at android.view.ViewGroup.layout(ViewGroup.java:5437)
  58. at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
  59. at android.widget.Line
  60.  
  61. public class PostFragment extends Fragment {
  62.  
  63. private View mRootView;
  64. private FirebaseRecyclerAdapter<Post, PostHolder> mPostAdapter;
  65. private RecyclerView mPostRecyclerView;
  66. private User mmUser;
  67. private Post mmPost;
  68.  
  69.  
  70. public PostFragment() {
  71. // Required empty public constructor
  72. }
  73.  
  74.  
  75. @Override
  76. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  77. Bundle savedInstanceState) {
  78. mRootView = inflater.inflate(R.layout.fragment_post, container, false);
  79.  
  80.  
  81. FloatingActionButton fab = (FloatingActionButton) mRootView.findViewById(R.id.fabM);
  82. fab.setOnClickListener(new View.OnClickListener() {
  83. @Override
  84. public void onClick(View v) {
  85. PostCreateDialog dialog = new PostCreateDialog();
  86. dialog.show(getFragmentManager(), null);
  87. }
  88. });
  89.  
  90. init();
  91. return mRootView;
  92. }
  93.  
  94. private void init() {
  95. mPostRecyclerView = (RecyclerView) mRootView.findViewById(R.id.recyclerview_post);
  96. mPostRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
  97. setupAdapter();
  98. mPostRecyclerView.setAdapter(mPostAdapter);
  99. }
  100.  
  101. private void setupAdapter() {
  102.  
  103. mPostAdapter = new FirebaseRecyclerAdapter<Post, PostHolder>(
  104. Post.class,
  105. R.layout.row_post,
  106. PostHolder.class,
  107. FirebaseUtils.getPostRef()
  108. ) {
  109. @Override
  110. protected void populateViewHolder(PostHolder viewHolder, final Post model, int position) {
  111. mmUser = new User();
  112. mmPost = new Post();
  113. viewHolder.setNumComments(String.valueOf(model.getNumComments()));
  114. viewHolder.setNumLikes(String.valueOf(model.getNumLikes()));
  115. viewHolder.setTime(DateUtils.getRelativeTimeSpanString(model.getTimeCreated()));
  116. viewHolder.setUsername(mmUser.getUser());
  117. viewHolder.setPostText(model.getPostText());
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125. StorageReference storageReference = FirebaseStorage.getInstance()
  126. .getReference(mmPost.getPostImageUrl());
  127. Glide.with(getActivity())
  128. .using(new FirebaseImageLoader())
  129. .load(storageReference)
  130. .into(viewHolder.postDisplayImageView);
  131.  
  132. viewHolder.postLikeLayout.setOnClickListener(new View.OnClickListener() {
  133. @Override
  134. public void onClick(View v) {
  135. onLikeClick(model.getPostId());
  136. }
  137. });
  138.  
  139. viewHolder.postCommentLayout.setOnClickListener(new View.OnClickListener() {
  140. @Override
  141. public void onClick(View v) {
  142. Intent intent = new Intent(getContext(), CommentActivity.class);
  143. intent.putExtra(Constants.EXTRA_POST, model);
  144. startActivity(intent);
  145. }
  146. });
  147.  
  148.  
  149. }
  150. };
  151.  
  152. }
  153.  
  154. private void onLikeClick(final String postId) {
  155. FirebaseUtils.getPostLikedRef(postId)
  156. .addListenerForSingleValueEvent(new ValueEventListener() {
  157. @Override
  158. public void onDataChange(DataSnapshot dataSnapshot) {
  159. if (dataSnapshot.getValue() != null) {
  160. //user liked
  161. FirebaseUtils.getPostRef()
  162. .child(postId)
  163. .child("numLikes")
  164. .runTransaction(new Transaction.Handler() {
  165. @Override
  166. public Transaction.Result doTransaction(MutableData mutableData) {
  167. long num = mutableData.getValue(Long.class);
  168. mutableData.setValue(num - 1);
  169. return Transaction.success(mutableData);
  170. }
  171.  
  172. @Override
  173. public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
  174. FirebaseUtils.getPostLikedRef(postId)
  175. .setValue(null);
  176. }
  177. });
  178. } else {
  179. FirebaseUtils.getPostRef()
  180. .child(postId)
  181. .child("numLikes")
  182. .runTransaction(new Transaction.Handler() {
  183. @Override
  184. public Transaction.Result doTransaction(MutableData mutableData) {
  185. long num = mutableData.getValue(Long.class);
  186. mutableData.setValue(num + 1);
  187. return Transaction.success(mutableData);
  188. }
  189.  
  190. @Override
  191. public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
  192. FirebaseUtils.getPostLikedRef(postId)
  193. .setValue(true);
  194. }
  195. });
  196. }
  197. }
  198.  
  199. @Override
  200. public void onCancelled(DatabaseError databaseError) {
  201.  
  202. }
  203. });
  204. }
  205.  
  206.  
  207. public static class PostHolder extends RecyclerView.ViewHolder {
  208.  
  209.  
  210. TextView postOwnerUsernameTextView;
  211. TextView postTimeCreatedTextView;
  212.  
  213. ImageView postDisplayImageView;
  214. TextView postTextTextView;
  215.  
  216. LinearLayout postLikeLayout;
  217. TextView postNumLikesTextView;
  218.  
  219. LinearLayout postCommentLayout;
  220. TextView postNumCommentsTextView;
  221.  
  222.  
  223. public PostHolder(View itemView) {
  224. super(itemView);
  225.  
  226. postOwnerUsernameTextView = (TextView) itemView.findViewById(R.id.tv_post_username);
  227. postTimeCreatedTextView = (TextView) itemView.findViewById(R.id.tv_time);
  228. postDisplayImageView = (ImageView) itemView.findViewById(R.id.iv_post_display);
  229. postLikeLayout = (LinearLayout) itemView.findViewById(R.id.like_layout);
  230. postCommentLayout = (LinearLayout) itemView.findViewById(R.id.comment_layout);
  231. postNumLikesTextView = (TextView) itemView.findViewById(R.id.tv_likes);
  232. postNumCommentsTextView = (TextView) itemView.findViewById(R.id.tv_comments);
  233. postTextTextView = (TextView) itemView.findViewById(R.id.tv_post_text);
  234. }
  235.  
  236. public void setUsername(String username) {
  237. postOwnerUsernameTextView.setText(username);
  238. }
  239.  
  240. public void setTime(CharSequence time) {
  241. postTimeCreatedTextView.setText(time);
  242. }
  243.  
  244. public void setNumLikes(String numLikes) {
  245. postNumLikesTextView.setText(numLikes);
  246. }
  247.  
  248. public void setNumComments(String numComments) {
  249. postNumCommentsTextView.setText(numComments);
  250. }
  251.  
  252. public void setPostText(String text) {
  253. postTextTextView.setText(text);
  254. }
  255.  
  256. }
  257. }
  258.  
  259. public class FirebaseUtils {
  260.  
  261. //==============================================================================================
  262. // USER REFERENCE
  263. public static DatabaseReference getUserRef(String email) {
  264. return FirebaseDatabase.getInstance()
  265. .getReference(Constants.USERS_KEYS)
  266. .child(email);
  267. }
  268. public static FirebaseUser getCurrentUser() {
  269. return FirebaseAuth.getInstance().getCurrentUser();
  270. }
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. // POST REFERENCE
  278. public static DatabaseReference getPostRef() {
  279. return FirebaseDatabase.getInstance()
  280. .getReference(Constants.POSTS_KEY);
  281. }
  282. public static Query getPostQuery() {
  283. return getPostRef().orderByChild(Constants.TIME_CREATED_KEY);
  284. }
  285. public static DatabaseReference getMyPostRef() {
  286. return FirebaseDatabase.getInstance().getReference(Constants.MY_POSTS)
  287. .child(getCurrentUser().getEmail().replace(".", ","));
  288. }
  289.  
  290.  
  291.  
  292.  
  293.  
  294. // POST LIKED REFERENCE
  295. public static DatabaseReference getPostLikedRef() {
  296. return FirebaseDatabase.getInstance()
  297. .getReference(Constants.POSTS_LIKED_KEY);
  298. }
  299. public static DatabaseReference getPostLikedRef(String postId) {
  300. return getPostLikedRef().child(getCurrentUser().getEmail()
  301. .replace(".", ","))
  302. .child(postId);
  303. }
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312. // USER ID
  313. public static String getUid() {
  314. String path = FirebaseDatabase.getInstance().getReference().push().toString();
  315. return path.substring(path.lastIndexOf("/") + 1);
  316. }
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325. // POST IMAGE REFERENCE
  326. public static StorageReference getImagesSRef() {
  327. return FirebaseStorage.getInstance().getReference(Constants.POST_IMAGES);
  328. }
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. // COMMENT REFERENCE
  338. public static DatabaseReference getCommentRef(String postId) {
  339. return FirebaseDatabase.getInstance().getReference(Constants.COMMENTS_KEY)
  340. .child(postId);
  341. }
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349. // RECORD
  350.  
  351. public static DatabaseReference getMyRecordRef() {
  352. return FirebaseDatabase.getInstance().getReference(Constants.USER_RECORD)
  353. .child(getCurrentUser().getEmail().replace(".", ","));
  354. }
  355.  
  356.  
  357.  
  358. public static void addToMyRecord(String node,final String id) {
  359. FirebaseUtils.getMyRecordRef().child(node).runTransaction(new Transaction.Handler() {
  360. @Override
  361. public Transaction.Result doTransaction(MutableData mutableData) {
  362. ArrayList<String> myPostCollection;
  363. if (mutableData.getValue() == null) {
  364. myPostCollection = new ArrayList<>(1);
  365. myPostCollection.add(id);
  366. mutableData.setValue(myPostCollection);
  367. } else {
  368. myPostCollection = (ArrayList<String>) mutableData.getValue();
  369. myPostCollection.add(id);
  370. mutableData.setValue(myPostCollection);
  371. }
  372. return Transaction.success(mutableData);
  373. }
  374.  
  375. @Override
  376. public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
  377.  
  378. }
  379. });
  380. }
  381.  
  382. public class PostCreateDialog extends DialogFragment implements View.OnClickListener {
  383.  
  384. private static final int RC_PHOTO_PICKER = 1;
  385. private View mRootView;
  386. private Post mPost;
  387.  
  388. private ProgressDialog mProgressDialog;
  389. private Uri mSelectedImageUri;
  390. private ImageView mPostDisplay;
  391.  
  392. @Override
  393. public Dialog onCreateDialog(Bundle savedInstanceState) {
  394. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  395. mPost = new Post();
  396.  
  397. mProgressDialog = new ProgressDialog(getContext());
  398. mRootView = getActivity().getLayoutInflater().inflate(R.layout.post_create_dialog, null);
  399. mPostDisplay = (ImageView) mRootView.findViewById(R.id.post_dialog_display);
  400. mRootView.findViewById(R.id.post_dialog_select_imageview).setOnClickListener(this);
  401. mRootView.findViewById(R.id.post_dialog_send_imageview).setOnClickListener(this);
  402. builder.setView(mRootView);
  403. return builder.create();
  404.  
  405.  
  406. }
  407.  
  408. @Override
  409. public void onClick(View v) {
  410. switch (v.getId()) {
  411. case R.id.post_dialog_send_imageview:
  412. sendPost();
  413. break;
  414. case R.id.post_dialog_select_imageview:
  415. selectImage();
  416. break;
  417. }
  418. }
  419.  
  420.  
  421. private void selectImage(){
  422. Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  423. intent.setType("image/jpeg");
  424. intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
  425. startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
  426. }
  427.  
  428. private void sendPost(){
  429. mProgressDialog.setMessage("Sending post...");
  430. mProgressDialog.setCancelable(false);
  431. mProgressDialog.setIndeterminate(true);
  432. mProgressDialog.show();
  433.  
  434. FirebaseUtils.getUserRef(FirebaseUtils.getCurrentUser().getEmail().replace(".", ","))
  435. .addListenerForSingleValueEvent(new ValueEventListener() {
  436. @Override
  437. public void onDataChange(DataSnapshot dataSnapshot) {
  438. User user = dataSnapshot.getValue(User.class);
  439. final String postUid = FirebaseUtils.getUid();
  440. TextView postDialogTextView = (TextView) mRootView.findViewById(R.id.post_dialog_edittext);
  441. String text = postDialogTextView.getText().toString();
  442.  
  443. mPost.setUser(user);
  444. mPost.setNumComments(0);
  445. mPost.setNumLikes(0);
  446. mPost.setTimeCreated(System.currentTimeMillis());
  447. mPost.setPostId(postUid);
  448. mPost.setPostText(text);
  449.  
  450. if (mSelectedImageUri != null) {
  451. FirebaseUtils.getImagesSRef()
  452. .child(mSelectedImageUri.getLastPathSegment())
  453. .putFile(mSelectedImageUri)
  454. .addOnSuccessListener(getActivity(),
  455. new OnSuccessListener<UploadTask.TaskSnapshot>() {
  456. @Override
  457. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  458. String url = Constants.POST_IMAGES + "/" + mSelectedImageUri.getLastPathSegment();
  459. //String downloadUrl = taskSnapshot.getDownloadUrl().toString();
  460. mPost.setPostImageUrl(url);
  461. addToMyPostList(postUid);
  462. }
  463.  
  464.  
  465. });
  466. } else {
  467. addToMyPostList(postUid);
  468. }
  469. }
  470.  
  471. @Override
  472. public void onCancelled(DatabaseError databaseError) {
  473. mProgressDialog.dismiss();
  474. }
  475. });
  476. }
  477.  
  478. private void addToMyPostList(final String postUid){
  479. FirebaseUtils.getPostRef().child(postUid)
  480. .setValue(mPost);
  481. FirebaseUtils.getMyPostRef().child(postUid).setValue(true)
  482. .addOnCompleteListener(getActivity(), new OnCompleteListener<Void>() {
  483. @Override
  484. public void onComplete(@NonNull Task<Void> task) {
  485. mProgressDialog.dismiss();
  486. dismiss();
  487. }
  488. });
  489.  
  490. FirebaseUtils.addToMyRecord(Constants.POSTS_KEY, postUid);
  491. }
  492.  
  493. @Override
  494. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  495. super.onActivityResult(requestCode, resultCode, data);
  496. if (requestCode == RC_PHOTO_PICKER) {
  497. if (resultCode == RESULT_OK) {
  498. mSelectedImageUri = data.getData();
  499. mPostDisplay.setImageURI(mSelectedImageUri);
  500. }
  501. }
  502.  
  503. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement