Я пытаюсь получить данные из диалогового фрагмента во фрагмент, передавая их через интерфейс. До сих пор я знаю, что сначала, потому что его фрагмент мне нужно реализовать интерфейс на MainActivity и оттуда отправить данные в любой фрагмент, который я хочу ,
Я понимаю это, но я не знаю, как это сделать.
Пока что я реализовал в MainActivity интерфейс, я получаю данные, но я не знаю, как отправить их во фрагмент.
Основная деятельность
public class MainActivity extends AppCompatActivity
implements ChangeProfileImgDialog.OnPhotoReceivedListener{
//these the methods that i implement
@Override
public void getImagePath(Uri imagePath) {
Log.d("imagepath",imagePath.toString());
}
@Override
public void getImageBitmap(Bitmap bitmap) {
Log.d("imagepath",bitmap.toString());
}
Фрагмент диалога - этот фрагмент диалога получает изображение из галереи / камеры
public class ChangeProfileImgDialog extends DialogFragment {
public interface OnPhotoReceivedListener{
public void getImagePath(Uri imagePath);
public void getImageBitmap(Bitmap bitmap);
}
OnPhotoReceivedListener mOnPhotoReceived;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/*
Results when selecting new image from phone memory
*/
if(requestCode == PICKFILE_REQUEST_CODE && resultCode == Activity.RESULT_OK){
Uri selectedImageUri = data.getData();
Log.d(TAG, "onActivityResult: image: " + selectedImageUri);
//send the uri and fragment to the interface
mOnPhotoReceived.getImagePath(selectedImageUri);
getDialog().dismiss();
}
else if(requestCode == CAMERA_REQUEST_CODE && resultCode == Activity.RESULT_OK){
Log.d(TAG, "onActivityResult: done taking a photo.");
Bitmap bitmap;
bitmap = (Bitmap) data.getExtras().get("data");
//send the bitmap and fragment to the interface
mOnPhotoReceived.getImageBitmap(bitmap);
getDialog().dismiss();
}
}
@Override
public void onAttach(Context context) {
try{
mOnPhotoReceived = (OnPhotoReceivedListener)this.getActivity();
}catch (ClassCastException e){
Log.e(TAG, "onAttach: ClassCastException: " + e.getMessage(), e.getCause() );
}
super.onAttach(context);
}
Фрагмент - этот фрагмент должен получить данные из фрагмента диалога. но это должно исходить от MainActivity.
public class MyAccountFragment extends Fragment implements View.OnClickListener,
ChangeProfileImgDialog.OnPhotoReceivedListener{
@Override
public void getImagePath(Uri imagePath) {
if( !imagePath.toString().equals("")){
mSelectedImageUri = imagePath;
mSelectedImageBitmap = null;
Log.d(TAG, "getImagePath: got the image uri: " + mSelectedImageUri);
}
}
@Override
public void getImageBitmap(Bitmap bitmap) {
if(bitmap != null){
mSelectedImageUri = null;
mSelectedImageBitmap = bitmap;
Log.d(TAG, "getImageBitmap: got the image bitmap: " + mSelectedImageBitmap);
}
}
Надеюсь, вы меня поняли. То, что я пытаюсь сделать, - это просто передать данные из фрагмента диалога во фрагмент.
Поскольку его фрагмент и я использую интерфейс, мне нужно реализовать этот интерфейс в MainActivity, а затем кое-как переместить данные во фрагмент.
Любая идея, как мне переместить данные во фрагмент?