Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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
Java 未为选项卡调用onCreateView_Java_Android_Tabs - Fatal编程技术网

Java 未为选项卡调用onCreateView

Java 未为选项卡调用onCreateView,java,android,tabs,Java,Android,Tabs,我有一个用于我的选项卡的viewpager。我有三个选项卡,在第一个选项卡中进行计算,并将其存储在tinyDb中,tinyDb仍然是SharedReferences。我还在第二个选项卡中进行另一个计算,并将答案存储在tinydb中,我在点击按钮时存储这些答案。第三个选项卡应该根据这两个答案进行计算。我发现这个计算非常有效,但问题是这个。当我完成了应用程序在选项卡1中应该计算的内容后,我转到选项卡2,并在我转到选项卡3时放入它应该计算的内容。选项卡3的onCreateView不会被调用,因此答案不

我有一个用于我的选项卡的viewpager。我有三个选项卡,在第一个选项卡中进行计算,并将其存储在tinyDb中,tinyDb仍然是SharedReferences。我还在第二个选项卡中进行另一个计算,并将答案存储在tinydb中,我在点击按钮时存储这些答案。第三个选项卡应该根据这两个答案进行计算。我发现这个计算非常有效,但问题是这个。当我完成了应用程序在选项卡1中应该计算的内容后,我转到选项卡2,并在我转到选项卡3时放入它应该计算的内容。选项卡3的onCreateView不会被调用,因此答案不会更新,直到我返回到选项卡1,然后再次单击选项卡3,然后调用onCreateView。我尝试过将setOffscreenPageLimit设置为0之类的操作,但没有效果,请告诉我如何更正此问题

这是选项卡一的代码

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_year1__timeline, container, false);
    circularProgressBar = (CircularProgressBar)rootView.findViewById(R.id.circularProgressbarTimelineYr1);
    textView = (TextView)rootView.findViewById(R.id.textForPercentageTimeLineYr1);
    listView = (ListView) rootView.findViewById(R.id.listForTimelineYr1);
    generalArray = new ArrayList<>();
    tinyDB = new TinyDB(getContext());
    storedList = tinyDB.getListString("savedSubjects");
    storedArray = tinyDB.getListString("savedSubjects2");
    saveBtn = (Button)rootView.findViewById(R.id.btnSaveYearOneFirstSemester);


    generalArray.addAll(storedList);
    generalArray.addAll(storedArray);
    tinyDB.putListString("generalArray", generalArray);
    final ArrayList<String>generalArrayStore = tinyDB.getListString("generalArray");
    arrayAdapter = new CustomListAdapterForCgpa(getActivity(), generalArray, new IOnGradeSelectedListener() {
        @Override
        public void onGradeSelected(String key, int value) {

            try
            {
                int studentGatheredPoints = 0;
                int totalMaximumSize = 0;


                for (String course : generalArrayStore) {
                    int courseGradeValue = getCourseGradeValue(course);
                    courseLoadValue = getCourseLoadValue(course);

                    int sum = courseGradeValue * courseLoadValue;

                    studentGatheredPoints += sum;

                    totalMaximumSize += courseLoadValue* 5;//change to the value of total edittext
                }

                int percent = studentGatheredPoints * 100 / totalMaximumSize;
                circularProgressBar.setProgress(percent);

                DecimalFormat decimalFormat = new DecimalFormat("0.00");
                double total = 100;
                double multiply = percent*5.00;
                finalAnswer = multiply/total;
                textView.setText(decimalFormat.format(finalAnswer));

            }catch (ArithmeticException ae)
            {
                String userName = tinyDB.getString("Username");
                new SweetAlertDialog(getContext(), SweetAlertDialog.NORMAL_TYPE)
                        .setTitleText("Haha, "+userName + " don't be in a hurry")
                        .setContentText("Credit loads have to be in your courses before viewing your timeline")
                        .setConfirmText("OK")
                        .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                            @Override
                            public void onClick(SweetAlertDialog sweetAlertDialog) {
                                sweetAlertDialog.dismissWithAnimation();
                                Intent intent = new Intent(getContext(), Splanner.class);
                                startActivity(intent);
                            }
                        })
                        .show();
            }

            textView.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                    saveBtn.setVisibility(View.VISIBLE);


                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

            saveBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    saveBtn.setVisibility(View.INVISIBLE);
                    tinyDB.putDouble("finalAnswerYr1FirstSemester",finalAnswer);
                }
            });





        }
    });

    listView.setAdapter(arrayAdapter);
    arrayAdapter.notifyDataSetChanged();

    return rootView;
}

private int getCourseGradeValue(String courseName) {
    String key = courseName + "_selectedValue";
    return tinyDB.getInt(key);
}

private int getCourseLoadValue(String courseName) {
    String key = courseName + "_selectedCourseLootValue";

    return tinyDB.getInt(key);
}
}

第三个呢

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView =  inflater.inflate(R.layout.fragment_year2__final_timeline, container, false);
    circularProgressBar = (CircularProgressBar)rootView.findViewById(R.id.circularProgressbarFinalTimelineYr2);
    textView = (TextView)rootView.findViewById(R.id.textForPercentageFinalTimelineYr2);
    tinyDB = new TinyDB(getContext());

    double yearOneFinalGpFirstSemester = tinyDB.getDouble("finalAnswerYr2FirstSemester", 0.00);
    double yearOneFinalGpSecondSemester = tinyDB.getDouble("finalAnswerYr2SecondSemester", 0.00);
    double finalGp = yearOneFinalGpFirstSemester+yearOneFinalGpSecondSemester;
    double finalGpFinal = finalGp/2;
    double val = finalGpFinal;
    val = val*100;
    val = (double)((int) val);
    val = val /100;
    textView.setText(String.valueOf(val));

    int total = 5;
    int change = (int) finalGpFinal;
    int multiply = 100*change;
    int divide = multiply/total;
    circularProgressBar.setProgress(divide);

    tinyDB.putDouble("FinalGpYear2", finalGpFinal);
    System.out.println(yearOneFinalGpFirstSemester);


    return rootView;
}

@Override
public void onResume() {
    super.onResume();

}}

最好在活动中使用页面更改侦听器,并在页面更改时更新UI内容

        viewPager.setAdapter(fragmentPagerAdapter);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                   //Get current fragment and update UI
                   BaseFragment fragment= (BaseFragment) fragmentPagerAdapter.getItem(position);
                //assumes updateUI ,a method in BaseFragment is overriden in Fragment implementation to update UI.You can place your logic here.
                fragment.updateUI();
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

最好在活动中使用页面更改侦听器,并在页面更改时更新UI内容

        viewPager.setAdapter(fragmentPagerAdapter);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                   //Get current fragment and update UI
                   BaseFragment fragment= (BaseFragment) fragmentPagerAdapter.getItem(position);
                //assumes updateUI ,a method in BaseFragment is overriden in Fragment implementation to update UI.You can place your logic here.
                fragment.updateUI();
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });