как получить выбранное изображение из одного занятия в второе занятие из firebase - PullRequest
0 голосов
/ 20 мая 2018

Я новичок в разработке для Android. Я хочу показать изображение в другом фрагменте, получив выбранное изображение с первого занятия, но у меня появляется ошибка

Это мойвид сетки, где пользователь выбирает изображение

@Override
public void onGridImageSelected(Photo photo, int activityNumber) {
    Log.d(TAG, "onGridImageSelected: selected an image gridview: " + photo.toString());
   FullScreenProductFragment fragment = new FullScreenProductFragment();
    Bundle args = new Bundle();
    args.putParcelable(getString(R.string.photo), photo);
    args.putInt(getString(R.string.activity_number), activityNumber);
    fragment.setArguments(args);
    FragmentTransaction transaction  = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.Profilecontainer, fragment);
    transaction.addToBackStack(getString(R.string.view_post_fragment));
    transaction.commit();
}

, это должно быть выбранное изображение для просмотра

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmentfullscreenlayout, container, false);
    mImageView = view.findViewById(R.id.zoom_image);

    Bundle bundle = getActivity().getIntent().getExtras();

    UnivarsalImageLoader.setImage(getPhotoFromBundle().getImage_path(),mImageView, null, "");
    Log.d(TAG, "onCreateView: getphoto from bundle"+getPhotoFromBundle().getImage_path());

    return view;
}
private Photo getPhotoFromBundle(){
    Log.d(TAG, "getPhotoFragment: argumentd"+getArguments());
    Bundle bundle = this.getArguments();

    if (bundle != null){
        return bundle.getParcelable(getString(R.string.photo));
    }else {
        return null;
    }
}

это мой журнал

java.lang.NullPointerException: Attempt to invoke virtual method  'java.lang.String com.example.alpha.lapid.models.Photo.getImage_path()' on a null object reference
    at com.example.alpha.lapid.Utils.FullScreenProductFragment.onCreateView(FullScreenProductFragment.java:56)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.j va:1428)

, когда я регистрирую это getphotobundleв фрагменте я не понимаю, в чем проблема, пожалуйста, скажите мне

 05-20 08:52:23.534 668-668/com.example.alpha.lapid 
        D/FullScreenProductFragme: getPhotoFragment: argumentdBundle[{}]

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Я решил, назвав это в своей основной деятельности, где я звонил фрагмент, если вы пытаетесь получить все детали фотографии выбранного изображения, вы можете использовать этот код, иначе вы хотите одно изображение использовать код моего друга greenapps на

public class Profile_Activity extends AppCompatActivity implements
    ProfileFragment.OnGridImageSelectedListner ,
    ViewPostFragment.OnCommentThreadSelectedListener,
    ViewProfileFragment.OnGridImageSelectedListner,

ViewPostFragment.Ontiemlistner {

private static final String TAG = "ProfileActivity";
@Override
public void ontimlistner(Photo photo) {
    Bundle args = new Bundle();
    FullScreenProductFragment fragment = new FullScreenProductFragment();
    args.putParcelable("large", photo);
    fragment.setArguments(args);
    FragmentTransaction transaction  = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.full_screen_container, fragment);
    transaction.addToBackStack(getString(R.string.fragment_full_screen_product));
    transaction.commit();
}
@Override
public void onCommentThreadSelectedListener(Photo photo) {
    ViewCommetFragment fragment = new ViewCommetFragment();
    Bundle args = new Bundle();
    args.putParcelable(getString(R.string.photo), photo);
    fragment.setArguments(args);
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.Profilecontainer, fragment);
    transaction.addToBackStack(getString(R.string.view_comments_fragment));
    transaction.commit();
}
@Override
public void onGridImageSelected(Photo photo, int activityNumber) {
    Log.d(TAG, "onGridImageSelected: selected an image gridview: " + photo.toString());
    ViewPostFragment fragment = new ViewPostFragment();

    Bundle args = new Bundle();
    args.putParcelable(getString(R.string.photo), photo);
    args.putInt(getString(R.string.activity_number), activityNumber);
    fragment.setArguments(args);
    FragmentTransaction transaction  = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.Profilecontainer, fragment);
    transaction.addToBackStack(getString(R.string.view_post_fragment));
    transaction.commit();
}

, и я назвал его фрагментом, где я хочу, чтобы это изображение показывалось

public FullScreenProductFragment(){
super();
setArguments(new Bundle());
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable      ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmentfullscreenlayout,    container, false);
    mImageView = view.findViewById(R.id.zoom_image);
    Bundle bundle = this.getArguments();


     photo = getPhotoFromBundle();

    setProduct();



    return view;
}

 public Photo getPhotoFromBundle(){
    Log.d(TAG, "getPhotoFragment: argumentd"+getArguments());
    Bundle bundle = this.getArguments();
    if (bundle != null){
        return bundle.getParcelable("large");
    }else {
        return null;
    }
   }

этот код во фрагменте, гдея добавил слушателя щелчка в этом виде сетки

 public  interface  Ontiemlistner{
 void ontimlistner(Photo photo);
 }
 Ontiemlistner ontiemlistner;
 public ViewPostFragment(){
 super();
 setArguments(new Bundle());
 }


added this code in my gridon item click listener 

 Photo = mPhoto;
 ontiemlistner.ontimlistner(mPhoto);
0 голосов
/ 20 мая 2018
Bundle bundle = getActivity().getIntent().getExtras();
Photo photo = getPhotoFromBundle(bundle);
if (photo==null) {
   Toast( ... Photo is null ..);
   return;
}

String path = photo.getImage_path();

File file = new File(path);

if (!file.exists()) {
   Toast( .. file does not exist ..);
    return;
 }


 UnivarsalImageLoader.setImage(file.getAbsolutePath(), mImageView, null, "");
...