Я новичок в Android. Это мое первое приложение. Я пробовал искать в Интернете, но все пытались передать простые данные из активности во фрагмент. Я хочу передать весь объект из активности во фрагмент. Я знаю, что есть одно решение: просто использовать сериализацию и десериализацию и поместить данные в Bundle.
Вместо того, чтобы пытаться сериализовать и десериализовать, я создал нестатический метод в своей деятельности и попытался получить активность () во фрагменте, а затем вызвал этот метод, но он возвращает мне значение null. Может ли кто-нибудь помочь мне с тем, что я делаю неправильно.
Ниже мой код: -
BaseDefaultActivity — это мой собственный настраиваемый класс, который расширяет 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;
}
}