bircastri
bircastri

Reputation: 2169

How to pass parameter to Fragment from FragmentActivity

I have a FragmentActivity in my android application. I use a viewPager to insert tabs in the activity. So I have this code. It works.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_clienti);

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String datas= extras.getString("Cliente");
            if (datas!= null) {
                System.out.println("pippo");
            } 
        }

        TabAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager());
        Tab = (ViewPager)findViewById(R.id.pager);
        Tab.setOnPageChangeListener(
                new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar = getActionBar();
                        actionBar.setSelectedNavigationItem(position);                    }
                });
        Tab.setAdapter(TabAdapter);
        actionBar = getActionBar();
        //Enable Tabs on Action Bar
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener(){
            @Override
            public void onTabReselected(android.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }
            @Override
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                Tab.setCurrentItem(tab.getPosition());
            }
            @Override
            public void onTabUnselected(android.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }};
            //Add New Tab
            actionBar.addTab(actionBar.newTab().setText("Scheda Cliente").setTabListener(tabListener));
            actionBar.addTab(actionBar.newTab().setText("Conto Cliente").setTabListener(tabListener));

            apriConnessioneDB();
    }

This is the class FragmentStatePagerAdapter

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

    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            //Fragement for Android Tab
            return new infoCliente();
        case 1:
           //Fragment for Ios Tab
            return new infoCliente();
        case 2:
            //Fragment for Windows Tab
            return new infoCliente();
        }
    return null;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "OBJECT " + (position + 1);
    }
}

This is the class Fragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.view_infocliente, container, false);
        if(savedInstanceState!=null){
            //String tmp = savedInstanceState.getString("myKey");

            //TextView  mTabHost = (TextView) findViewById(android.R.id.labelRagioneSociale);
            System.out.println("PIPPPPPPPPPPPPPPPPPPPPPP");
        }
        TextView btn=(TextView) view.findViewById(R.id.labelRagioneSociale5);  
        btn.setText("pippo");
        return view;
    } 

Now I want to know How I can pass a parameter to infoCliente class. In the onCreate method of first class I have this:

String datas= extras.getString("Cliente");

I want pass this parameter to fragment class.

Upvotes: 0

Views: 1510

Answers (2)

Android
Android

Reputation: 9033

Bundle bundle = new Bundle();
bundle.putInt("battery", bat);
MyFragment fragment=new MyFragment();
fragment.setArguments(bundle);

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragment_container,fragment);
ft.commit();

Then in onCreate() method of the fragment:

 Bundle bundle=getArguments();  int mLabel = bundle.getInt("battery",0);

Upvotes: 1

Alessandro Roaro
Alessandro Roaro

Reputation: 4733

Define an interface in your Fragment, for example

public interface FragmentCallback {

    onSomethingHappend(String param);

}

Implement the interface in your Activity.

Then, when you want to call the callback, do something like this:

FragmentCallback callback = (FragmentCallback) getActivity();
callback.onSomethingHappened(string);

Upvotes: 0

Related Questions