【发布时间】:2020-03-06 18:24:56
【问题描述】:
我正在将一个整数值从一个片段发送到另一个片段,但在执行时出现空对象引用错误。下面我发布了我的两个片段类和一个 ViewModel 类,我在其中传递数据。
我正在使用此支持将数据发送到另一个片段
RowViewModel.Class
{
public BindableString albumName = new BindableString();
public BindableString albumDate = new BindableString();
public BindableString albumYear = new BindableString();
public BindableString albumMonth = new BindableString();
int position;
HappyMomentFragment happyMomentFragment;
ArrayList<RowHappyMomentViewModel> arrayList;
public static String TAG = "RowHappyMomentViewModel";
public RowHappyMomentViewModel(HappyMomentFragment happyMomentFragment, in position) {
this.happyMomentFragment = happyMomentFragment;
this.position = position;
}
public void onRowClick(View view) {
Bundle bundle=new Bundle();
bundle.putInt("Position", position);
happyMomentFragment.setArguments(bundle);
HappyMomentDetailFragment.addFragment((BaseActivity)
happyMomentFragment.getActivity());
//Log.e(TAG, "position " + position);
}
}
我在这个类中发送数据。
HappyMomentFragment.class
{
HappyMomentViewModel mViewModel;
FragmentHappyMomentBinding binding;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewModel = new HappyMomentViewModel(this);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_happy_moment, container, false);
binding.setVm(mViewModel);
((BaseActivity) getActivity()).setToolbarVisibility(false);
return binding.getRoot();
}
public static void addFragment(BaseActivity activity) {
activity.replaceFragment(new HappyMomentFragment(), true);
}
**I am receiving the data in this class**
HapppyMomentDetailFragment.class{
HappyMomentDetailViewModel mViewModel;
FragmentHappyMomentDetailBinding binding;
public final String TAG = "HappyMomentDetailFragment";
int position;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewModel = new HappyMomentDetailViewModel(this);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_happy_moment_detail, container, false);
binding.setVm(mViewModel);
Bundle args=getArguments();
position = args.getInt("Position");
ViewPager viewPager = binding.getRoot().findViewById(R.id.view_pager);
TabLayout tabLayout = binding.getRoot().findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
((BaseActivity) getActivity()).setToolbarVisibility(false);
Log.e(TAG, "position " + position);
return binding.getRoot();
}
public static void addFragment(BaseActivity activity) {
activity.replaceFragment(new HappyMomentDetailFragment(), true);
}
}
【问题讨论】:
-
HappyMomentDetailFragment 和 FragmentTwo 是同一个类吗?
-
不,他们不是
-
所以你没有为正确的类设置参数
-
你能解释一下我在这方面很新
标签: android android-fragments fragment