GetPagerFragment instead of getActivity since currently ContributionsFragment take over responsibility from ContributionsActivity

This commit is contained in:
neslihanturan 2018-09-09 17:34:57 +03:00
parent 94201aa930
commit 01461d2508
2 changed files with 72 additions and 28 deletions

View file

@ -146,7 +146,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
detailProvider = (MediaDetailPagerFragment.MediaDetailProvider) getActivity();
detailProvider = (MediaDetailPagerFragment.MediaDetailProvider) (getParentFragment().getParentFragment());
if (savedInstanceState != null) {
editable = savedInstanceState.getBoolean("editable");

View file

@ -9,6 +9,7 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
@ -18,7 +19,6 @@ import android.support.v4.content.ContextCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.ShareActionProvider;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@ -35,9 +35,12 @@ import javax.inject.Named;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.category.CategoryDetailsActivity;
import fr.free.nrw.commons.category.CategoryImagesActivity;
import fr.free.nrw.commons.contributions.Contribution;
import fr.free.nrw.commons.contributions.ContributionsActivity;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.explore.SearchActivity;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.utils.ImageUtils;
import timber.log.Timber;
@ -62,6 +65,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
ViewPager pager;
private Boolean editable;
private boolean isFeaturedImage;
MediaDetailAdapter adapter;
public MediaDetailPagerFragment() {
this(false, false);
@ -77,13 +81,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Log.d("deneme","onCreateView MediaDetailFragment");
View view = inflater.inflate(R.layout.fragment_media_detail_pager, container, false);
ButterKnife.bind(this,view);
pager.addOnPageChangeListener(this);
final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager());
Log.d("deneme","getActivity returns:"+getActivity());
adapter = new MediaDetailAdapter(getChildFragmentManager());
if (savedInstanceState != null) {
final int pageNumber = savedInstanceState.getInt("current-page");
@ -92,7 +94,12 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
view.postDelayed(() -> {
pager.setAdapter(adapter);
pager.setCurrentItem(pageNumber, false);
Log.d("deneme","getActivity returns:"+getActivity());
if(getActivity() == null) {
Timber.d("Returning as activity is destroyed!");
return;
}
getActivity().supportInvalidateOptionsMenu();
adapter.notifyDataSetChanged();
}, 100);
@ -122,11 +129,18 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(getActivity() == null) {
Timber.d("Returning as activity is destroyed!");
return true;
}
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
switch (item.getItemId()) {
case R.id.menu_share_current_image:
// Share - intent set in onCreateOptionsMenu, around line 252
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri());
startActivity(Intent.createChooser(shareIntent, "Share image via..."));
return true;
case R.id.menu_browser_current_image:
// View in browser
@ -152,12 +166,12 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
return true;
case R.id.menu_retry_current_image:
// Retry
((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem());
//((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem());
getActivity().getSupportFragmentManager().popBackStack();
return true;
case R.id.menu_cancel_current_image:
// todo: delete image
((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
//((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
getActivity().getSupportFragmentManager().popBackStack();
return true;
default:
@ -185,10 +199,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
* @param m Media file to download
*/
private void downloadMedia(Media m) {
String imageUrl = m.getImageUrl(),
fileName = m.getFilename();
String imageUrl = m.getImageUrl(), fileName = m.getFilename();
if (imageUrl == null || fileName == null) {
if (imageUrl == null
|| fileName == null
|| getContext() == null
|| getActivity() == null) {
Timber.d("Skipping download media as either imageUrl %s or filename %s activity is null", imageUrl, fileName);
return;
}
@ -229,8 +246,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
menu.clear(); // see http://stackoverflow.com/a/8495697/17865
inflater.inflate(R.menu.fragment_image_detail, menu);
if (pager != null) {
//MediaDetailProvider provider = (MediaDetailProvider) getActivity();
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
if(provider == null) {
return;
}
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
if (m != null) {
// Enable default set of actions, then re-enable different set of actions only if it is a failed contrib
@ -240,19 +260,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
menu.findItem(R.id.menu_share_current_image).setEnabled(true).setVisible(true);
menu.findItem(R.id.menu_download_current_image).setEnabled(true).setVisible(true);
// Set ShareActionProvider Intent
ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.menu_share_current_image));
// On some phones null is returned for some reason:
// https://github.com/commons-app/apps-android-commons/issues/413
if (mShareActionProvider != null) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT,
m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri());
mShareActionProvider.setShareIntent(shareIntent);
}
if (m instanceof Contribution) {
if (m instanceof Contribution ) {
Contribution c = (Contribution) m;
switch (c.getState()) {
case Contribution.STATE_FAILED:
@ -281,12 +289,40 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
}
public void showImage(int i) {
Log.d("deneme","pager is:"+pager);
pager.setCurrentItem(i);
Handler handler = new Handler();
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
}
/**
* The method notify the viewpager that number of items have changed.
*/
public void notifyDataSetChanged(){
adapter.notifyDataSetChanged();
}
@Override
public void onPageScrolled(int i, float v, int i2) {
if(getParentFragment().getActivity() == null) {
Timber.d("Returning as activity is destroyed!");
return;
}
if (i+1 >= adapter.getCount()){
try{
((CategoryImagesActivity) getContext()).requestMoreImages();
}catch (Exception e){
e.printStackTrace();
}
try{
((CategoryDetailsActivity) getContext()).requestMoreImages();
}catch (Exception e){
e.printStackTrace();
}
try{
((SearchActivity) getContext()).requestMoreImages();
}catch (Exception e){
e.printStackTrace();
}
}
getParentFragment().getActivity().supportInvalidateOptionsMenu();
}
@ -321,6 +357,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
public Fragment getItem(int i) {
if (i == 0) {
// See bug https://code.google.com/p/android/issues/detail?id=27526
if(getParentFragment().getActivity() == null) {
Timber.d("Skipping getItem. Returning as activity is destroyed!");
return null;
}
pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5);
}
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
@ -328,6 +368,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
@Override
public int getCount() {
if(getActivity() == null) {
Timber.d("Skipping getCount. Returning as activity is destroyed!");
return 0;
}
return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount();
}
}