0

I am new to Android.Its my first application.I have tried searching on Internet but everyone tried to pass simple data from activity to fragment.I want to pass an whole object from activity to fragment. I know there is one solution around is just use serialize & de-serialize & put the data in Bundle.

Instead trying serialize & deserialize,I created a non-static method in my activity & trying to getActivity() in fragment & then calling that method but it returns me null.Can anybody help me with what I am doing wrong.

Below is my code:-

BaseDefaultActivity is my own customized class which extends AppCompatActivity.

public class EventDetailActivity extends BaseDefaultActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setBaseContentView(R.layout.activity_event_detail);
        ButterKnife.bind(this);
        initialiseDataFromIntend();
        DummyObject obj=new DummyObj();
        setDataObject(obj);

        // Get the ViewPager and set it's PagerAdapter so that it can display items
        viewPager.setAdapter(new EventDetailFragementAdapter(getSupportFragmentManager(), EventDetailActivity.this));

        // Give the TabLayout the ViewPager
        tabLayout.setupWithViewPager(viewPager);
    }

}


public class BaseDefaultActivity extends AppCompatActivity implements BaseActivity {
    private Object dataObj;
    public void setDataObject(Object obj) {
            this.dataObj = obj;
        }

        public Object getDataObj() {
            return this.dataObj;
        }
    }



public class EventDetailFragementAdapter extends FragmentPagerAdapter {
    final int PAGE_COUNT = 3;
    private String tabTitles[] = new String[]{"Tab1", "Tab2", "Tab3"};
    private Context context;

    public EventDetailFragementAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return tabTitles[position];
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new EventDetailFragement();
                break;

            case 1:
                fragment = new EventBasicInfoFragement();
                break;

            default:
                fragment = new EventDetailFragement();
                break;
        }
        return fragment;
    }


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



public class EventDetailFragement extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.event_detail_fragement, container, false);
        TextView textView = (TextView) view;
        textView.setText("AAAAAAA #" + (SearchEventResponseObject) ((BaseDefaultActivity) getActivity()).getDataObj());
        return view;
    }
}

0 Answers0