Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用子类中的变量集形成子类中的主类?_Android_Variables_Methods_Subclass - Fatal编程技术网

Android 如何使用子类中的变量集形成子类中的主类?

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

我有一个活动,其中有一个占位符片段子类。我试图将一个int传递到Placeholder片段中,这显然是有效的,我返回了int并将其打印到logcat,这确实是正确的,但是当onCreateView方法运行时,传递的int突然消失并重置为0。我做错了什么

以下是我的活动中负责传递int的代码:

以下是占位符片段中int的相关声明字段、构造函数和getter/setter:

下面是我的oncreaview的一部分,它应该在数据库查询中使用int:

    @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;
}