Android 如何使用子类中的变量集形成子类中的主类?
我有一个活动,其中有一个占位符片段子类。我试图将一个int传递到Placeholder片段中,这显然是有效的,我返回了int并将其打印到logcat,这确实是正确的,但是当onCreateView方法运行时,传递的int突然消失并重置为0。我做错了什么 以下是我的活动中负责传递int的代码: 以下是占位符片段中int的相关声明字段、构造函数和getter/setter: 下面是我的oncreaview的一部分,它应该在数据库查询中使用int:Android 如何使用子类中的变量集形成子类中的主类?,android,variables,methods,subclass,Android,Variables,Methods,Subclass,我有一个活动,其中有一个占位符片段子类。我试图将一个int传递到Placeholder片段中,这显然是有效的,我返回了int并将其打印到logcat,这确实是正确的,但是当onCreateView方法运行时,传递的int突然消失并重置为0。我做错了什么 以下是我的活动中负责传递int的代码: 以下是占位符片段中int的相关声明字段、构造函数和getter/setter: 下面是我的oncreaview的一部分,它应该在数据库查询中使用int: @Override public V
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_menu, container, false);
MenuViewModel viewModel = ViewModelProviders.of(this).get(MenuViewModel.class);
//MenuActivity m = new MenuActivity();
//int resID = m.getResID();
//↑ This was my attempt at trying to get the int straight from a getter in the MenuActivity, it returns 0
Log.e("SplitBill","From onCreateView(): ResID is " + ResID);
//↑ This also prints 0 to logcat
viewModel.setResID(ResID);
编辑:SectionsPagerAdapter是MenuActivity中的另一个子类。它负责获取占位符片段的实例。这里是全文:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
}
您应该只对片段使用空构造函数
public static MyFragment newInstance(int someInt) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("someInt", someInt);
myFragment.setArguments(args);
return myFragment;
}
MyFragment fragment=MyFragment.newInstance5;是获取片段实例并设置值的方式
要获取值,请使用getArguments.getIntsomeInt,0;在片段的onCreate方法中好的,我已经编辑了该实例。现在我从SectionsPagerAdapter的getItem方法中得到了一个错误,我用它编辑了文章,因为占位符片段newInstance代码需要比getItem提供的更多的参数。“我该怎么处理这件事呢?”SikuM。请发一个新问题。
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
}
public static MyFragment newInstance(int someInt) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("someInt", someInt);
myFragment.setArguments(args);
return myFragment;
}