1

我有一個問題,我不知道哪個是一個錯誤,當我按下添加照片按鈕或發送按鈕根本沒有發生,我沒有得到任何錯誤, 第一個按鈕應該打開我的照片,第二應該發送到RecyclerView在fragament我給我的代碼代碼中的錯誤按鈕的按鈕完全沒有任何東西

對不起,我的英語使用谷歌翻譯

片段

public class PostCreateDialog extends DialogFragment implements View.OnClickListener{ 

    private static final int RC_PHOTO_PICKER = 1; 
    private Post mPost; 
    private ProgressDialog mProgressDialog; 
    private ImageView mPostImageView; 
    private View mRootView; 
    private Uri mSelectedUri; 
    private ImageButton sendPostButton; 
    private ImageButton selectFotoButton; 

    @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.create_post_dialog, null); 

     mPostImageView = (ImageView) mRootView.findViewById(R.id.post_dialog_display); 
     selectFotoButton = (ImageButton) mRootView.findViewById(R.id.post_dialog_select_imageview); 
     sendPostButton = (ImageButton) mRootView.findViewById(R.id.post_dialog_send_imageview); 
     builder.setView(mRootView); 
     return builder.create(); 


    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.post_dialog_select_imageview: 
       selectImage(); 
       break; 
      case R.id.post_dialog_send_imageview: 
       sendPost(); 
       break; 
     } 
    } 


    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 postId = FirebaseUtils.getUid(); 
       TextView postDialogText = (TextView) mRootView.findViewById(R.id.post_dialog_edittext); 
       String text = postDialogText.getText().toString(); 

       mPost.setUser(user); 
       mPost.setNumOfLikes(0); 
       mPost.setNumOfComments(0); 
       mPost.setNumOfUnlikes(0); 
       mPost.setTimeOfcreation(System.currentTimeMillis()); 
       mPost.setPostText(text); 

       if(mSelectedUri != null){ 
        FirebaseUtils.getImageRef().child(mSelectedUri.getLastPathSegment()).putFile(mSelectedUri).addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

          String url = Contants.POST_IMAGES + "/" + mSelectedUri.getLastPathSegment(); 
          mPost.setImageUrl(url); 
          addToMyPostList(postId); 

         } 
        }); 
       }else { 
        addToMyPostList(postId); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       mProgressDialog.dismiss(); 
      } 
     }); 



    } 

    // ESTE DE AQUI ES COMO UN FINAL A TOODO SI SE COMPLETA O SI CANCELA 
    private void addToMyPostList(String postId){ 
     FirebaseUtils.getPostRef().child(postId).setValue(mPost); 
     FirebaseUtils.getPostRef().child(postId).setValue(true).addOnCompleteListener(getActivity(), new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       mProgressDialog.dismiss(); 
       dismiss(); 
      } 
     }); 

    } 


    // ESTOS DOS METODOS SIRVEN PARA SELECCIONAR LA IMAGEN 
    private void selectImage() { 
     Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); 
     intent1.setType("image/jpeg"); 
     intent1.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
     startActivityForResult(Intent.createChooser(intent1, "Comlete action using"), RC_PHOTO_PICKER); 
    } 

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

     if(requestCode == RC_PHOTO_PICKER){ 
      if(resultCode == RESULT_OK){ 
       mSelectedUri = data.getData(); 
       mPostImageView.setImageURI(mSelectedUri); 
      } 
     } 
    } 


    } 

對話框:

public class PostCreateDialog extends DialogFragment implements View.OnClickListener{ 

    private static final int RC_PHOTO_PICKER = 1; 
    private Post mPost; 
    private ProgressDialog mProgressDialog; 
    private ImageView mPostImageView; 
    private View mRootView; 
    private Uri mSelectedUri; 
    private ImageButton sendPostButton; 
    private ImageButton selectFotoButton; 

    @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.create_post_dialog, null); 

     mPostImageView = (ImageView) mRootView.findViewById(R.id.post_dialog_display); 
     selectFotoButton = (ImageButton) mRootView.findViewById(R.id.post_dialog_select_imageview); 
     sendPostButton = (ImageButton) mRootView.findViewById(R.id.post_dialog_send_imageview); 
     builder.setView(mRootView); 
     return builder.create(); 


    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.post_dialog_select_imageview: 
       selectImage(); 
       break; 
      case R.id.post_dialog_send_imageview: 
       sendPost(); 
       break; 
     } 
    } 


    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 postId = FirebaseUtils.getUid(); 
       TextView postDialogText = (TextView) mRootView.findViewById(R.id.post_dialog_edittext); 
       String text = postDialogText.getText().toString(); 

       mPost.setUser(user); 
       mPost.setNumOfLikes(0); 
       mPost.setNumOfComments(0); 
       mPost.setNumOfUnlikes(0); 
       mPost.setTimeOfcreation(System.currentTimeMillis()); 
       mPost.setPostText(text); 

       if(mSelectedUri != null){ 
        FirebaseUtils.getImageRef().child(mSelectedUri.getLastPathSegment()).putFile(mSelectedUri).addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

          String url = Contants.POST_IMAGES + "/" + mSelectedUri.getLastPathSegment(); 
          mPost.setImageUrl(url); 
          addToMyPostList(postId); 

         } 
        }); 
       }else { 
        addToMyPostList(postId); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       mProgressDialog.dismiss(); 
      } 
     }); 



    } 

    // ESTE DE AQUI ES COMO UN FINAL A TOODO SI SE COMPLETA O SI CANCELA 
    private void addToMyPostList(String postId){ 
     FirebaseUtils.getPostRef().child(postId).setValue(mPost); 
     FirebaseUtils.getPostRef().child(postId).setValue(true).addOnCompleteListener(getActivity(), new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       mProgressDialog.dismiss(); 
       dismiss(); 
      } 
     }); 

    } 


    // ESTOS DOS METODOS SIRVEN PARA SELECCIONAR LA IMAGEN 
    private void selectImage() { 
     Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); 
     intent1.setType("image/jpeg"); 
     intent1.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
     startActivityForResult(Intent.createChooser(intent1, "Comlete action using"), RC_PHOTO_PICKER); 
    } 

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

     if(requestCode == RC_PHOTO_PICKER){ 
      if(resultCode == RESULT_OK){ 
       mSelectedUri = data.getData(); 
       mPostImageView.setImageURI(mSelectedUri); 
      } 
     } 
    } 


    } 
+1

你沒有在任何'Button'上調用'setOnClickListener(this)'。 –

+0

在代碼 – warlock

+0

@dskato中沒有使用setOnClickLisnter(),只需將它添加到已初始化小部件的代碼中即可。 mPostImageView.setOnClickListener(this); selectFotoButton.setOnClickListener(this); sendPostButton.setOnClickListener(this); – Geek

回答

1

嘗試在按鈕單擊上顯示任何烤麪包。 如果吐司出現,那麼您的點擊事件正在工作,如果吐司沒有顯示,那麼您的按鈕點擊不起作用。