2016-05-09 14 views
1

Ich bin eine FragmentAktivität und ein ShareFragment erstellt. Ich möchte die Variable (Bild-URL) von FragmentActivity an ShareFragment übergeben. Ich versuche das Paket zu verwenden, um Extras in ShareFragment zu erhalten, aber es funktioniert nicht. Ich habe dies in FragmentActivityübergeben Variable zwischen FragmentAktivität und sein Fragment

private ShareFragment mShareFragment; 
    FragmentManager fm = getSupportFragmentManager(); 
    mShareFragment = (ShareFragment) fm.findFragmentById(R.id.sharefragment); 

Sharefragment.java:

public class ShareFragment extends Fragment { 
private CallbackManager mCallbackManager; 
private OnShareContentChangedListener mShareContentChangedListener; 
private ViewPager mViewPage; 

// The resource to url mapping 
private static final ArrayList<Pair<Integer, String>> IMAGE_IDS = 
     new ArrayList<Pair<Integer, String>>() {{ 
      add(new Pair<>(R.drawable.goofy, "http://shareitexampleapp.parseapp.com/goofy/")); 
      add(new Pair<>(R.drawable.liking, "http://shareitexampleapp.parseapp.com/liking/")); 
      add(new Pair<>(R.drawable.viking, "http://shareitexampleapp.parseapp.com/viking/")); 
     }}; 
private String _url; 

@Override 
public View onCreateView(
     LayoutInflater inflater, 
     ViewGroup container, 
     Bundle savedInstanceState) { 

    super.onCreateView(inflater, container, savedInstanceState); 
    mCallbackManager = CallbackManager.Factory.create(); 

    View view = inflater.inflate(share_it_view, container, false); 

    LoginButton loginButton = (LoginButton) view.findViewById(R.id.connectWithFbButton); 
    loginButton.setFragment(this); 
    loginButton.setReadPermissions("public_profile"); 

    setupViewPage(view); 
    LikeView pageLike = (LikeView) view.findViewById(R.id.like_page); 
    pageLike.setFragment(this); 
    return view; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    mCallbackManager.onActivityResult(requestCode, resultCode, data); 
    System.out.println(".......ONACTIVITYRESULT......." ); 
} 

public void setOnShareContentChangeListener(OnShareContentChangedListener listener) { 
    mShareContentChangedListener = listener; 


} 

public String getCurrentShareContent() { 

    return IMAGE_IDS.get(mViewPage.getCurrentItem()).second; 
} 

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    public ScreenSlidePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     ShareImageFragment imageFragment = new ShareImageFragment(); 
     imageFragment.setImage(IMAGE_IDS.get(position).first); 
     return imageFragment; 
    } 

    @Override 
    public int getCount() { 
     return IMAGE_IDS.size(); 
    } 
} 

private void setupViewPage(View view) { 
    mViewPage = (ViewPager) view.findViewById(R.id.pager); 
    PagerAdapter adapter = new ScreenSlidePagerAdapter(getFragmentManager()); 
    mViewPage.setAdapter(adapter); 

    final PageSelector pageSelector = (PageSelector) view.findViewById(R.id.page_selector); 
    pageSelector.setImageCount(IMAGE_IDS.size()); 

    final LikeView photoLike = (LikeView) view.findViewById(R.id.like_photo); 
    photoLike.setFragment(this); 

    mViewPage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(
       int position, 
       float positionOffset, 
       int positionOffsetPixels) { 
      pageSelector.setPosition(position); 
      String shareContent = IMAGE_IDS.get(position).second; 
      photoLike.setObjectIdAndType(
        shareContent, 
        LikeView.ObjectType.OPEN_GRAPH); 
      mShareContentChangedListener.onShareContentChanged(shareContent); 
     } 

     @Override 
     public void onPageSelected(int position) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 
} 

public interface OnShareContentChangedListener { 
    void onShareContentChanged(String content); 
} 

}

+0

Verwendung parcel !! –

Antwort

0

dies versuchen, zu hoffen, dass es

Bundle bundle = new Bundle(); 
bundle.putString("name", name); 
bundle.putString("address", address); 
FragmentA fragmentA = new FragmentA(); 
fragmentA.setArguments(bundle); 

dann in Fragment

String name = getArguments().getString("name"); 
String address = getArguments().getString("address"); 
hilft

Andere Art und Weise

den Wert in Fragmente Get:

String name = ((C)getActivity()).getValue(); 

Toast.makeText(getActivity(), name, Toast.LENGTH_SHORT); 

C-Klasse:

public String getValue() 
{ 
    return trainerStrDescription; 
} 
+0

Großartig !!! Die zweite Option funktioniert. Danke – josiland

+0

Willkommen! Für die Antwort zu mehr Fragen folgen Sie coderzpassion.com –

Verwandte Themen