0
大家好我有一個問題,我試圖解決3天沒有停止,但我無法解決它,這是絕望的,它與StorageReference,獲取存儲引用不好,無法解決
當我打電話給getReference()
方法時,它給了我一個「位置不能爲空或空的位置」,但重點是如果我給出存儲參考,並試圖與getReferenceFromUrl()
一起使用時,運行,您可以使用Glide或與畢加索,但返回到我的活動我得到一個空指針異常,我不能使用它。難道這
"java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String android.net.Uri.getLastPathSegment()' on a null object
reference"
,我把該方法中的照片發送成功到達,但想解救他們與畢加索或下滑的ImageView的使用它們的時候給了我這個問題
我嘗試了所有可能的方式但它不起作用
這是給我的問題的類。例外的問題是在StorageRefence行填入viewHolder,我把文件中的sendComment
方法
private void initCommentSection() {
RecyclerView commentRecyclerView = (RecyclerView) findViewById(R.id.comment_recyclerview);
commentRecyclerView.setLayoutManager(new LinearLayoutManager(CommentActivity.this));
這裏的populateVIewHolder的問題,在存儲的參考,在getLastPathSegment()
FirebaseRecyclerAdapter<Comment, CommentHolder> commentAdapter =
new FirebaseRecyclerAdapter<Comment, CommentHolder>(
Comment.class,
R.layout.row_comment,
CommentHolder.class,
FirebaseUtils.getCommentRef(mPost.getPostId())) {
@Override
protected void populateViewHolder(final CommentHolder viewHolder, Comment model, int position) {
viewHolder.setUsername(mUser.getUsername());
viewHolder.setComment(model.getComment());
viewHolder.setTime(DateUtils.getRelativeTimeSpanString(model.getTimeCreated()));
StorageReference sdsd = FirebaseStorage.getInstance().getReferenceFromUrl(FirebaseUtils.getCommentsImagesRef().child(mSelectedImageUri.getLastPathSegment()).toString());
sdsd.getDownloadUrl().addOnSuccessListener(CommentActivity.this, new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.with(CommentActivity.this).load(uri).into(viewHolder.imageBetaComm);
}
});
if(mSelectedImageUri == null){
StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl("https://firebasestorage.googleapis.com/v0/b/memetics-e9fac.appspot.com/o/bite_carpet%2Fbite.png?alt=media&token=36b90aed-5448-4493-836a-ad5554848820");
storageReference.getDownloadUrl().addOnSuccessListener(CommentActivity.this, new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.with(CommentActivity.this).load(uri).into(viewHolder.imageBetaComm);
}
});
}
}
};
commentRecyclerView.setAdapter(commentAdapter);
}
ANS這裏的照片發送到
private void sendComment() {
final ProgressDialog progressDialog = new ProgressDialog(CommentActivity.this);
progressDialog.setMessage("Sending comment..");
progressDialog.setCancelable(true);
progressDialog.setIndeterminate(true);
progressDialog.show();
final String uid = FirebaseUtils.getUid();
final String strComment = mCommentEditTextView.getText().toString();
FirebaseUtils.getUserRef(FirebaseUtils.getCurrentUser().getEmail().replace(".", ","))
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
if(mSelectedImageUri != null){
mComent.setUser(user);
mComent.setCommentId(uid);
mComent.setComment(strComment);
mComent.setTimeCreated(System.currentTimeMillis());
FirebaseUtils.getCommentsImagesRef().child(mSelectedImageUri.getLastPathSegment()).putFile(mSelectedImageUri);
}else{
mComent.setUser(user);
mComent.setCommentId(uid);
mComent.setComment(strComment);
mComent.setTimeCreated(System.currentTimeMillis());
}
FirebaseUtils.getCommentRef(mPost.getPostId())
.child(uid)
.setValue(mComent);
FirebaseUtils.getMyCommentRef().child(uid).setValue(true);
FirebaseUtils.addToMyRecord(Constants.COMMENTS_KEY, uid);
FirebaseUtils.getPostRef().child(mPost.getPostId())
.child("numComments")
.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
long num = (long) mutableData.getValue();
mutableData.setValue(num + 1);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
progressDialog.dismiss();
FirebaseUtils.addToMyRecord(Constants.COMMENTS_KEY,uid);
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
progressDialog.dismiss();
}
});
}
這裏有太多的代碼來幫助有效。請發佈[重現問題所需的最小代碼](http://stackoverflow.com/help/mcve)(閱讀鏈接,它非常有用)。一旦您可以用單一方法重現問題,只需使用硬編碼的值,就會更容易發現問題所在。 –
@FrankvanPuffelen現在我剛剛編輯它,只是把neccesary – TheQuestionerXxx