Бандл не заполняется - PullRequest
       21

Бандл не заполняется

0 голосов
/ 19 сентября 2019

Я пытаюсь отправить некоторые данные из действия в его фрагмент.Я связал данные, но когда я пытаюсь получить их во фрагменте, они появляются пустыми.

Graph.java (фрагмент)

private void setData() {

        ArrayList<Entry> values = new ArrayList<>();
        values.add(new Entry(0, (float) 4.8));

        Log.e("set", "method reached");

        LineDataSet set1;
        if (mChart.getData() != null &&
                mChart.getData().getDataSetCount() > 0) {
            set1 = (LineDataSet) mChart.getData().getDataSetByIndex(0);
            set1.setValues(values);
            mChart.getData().notifyDataChanged();
            mChart.notifyDataSetChanged();
        } else {
            set1 = new LineDataSet(values, "Blood Glucose Levels");
            set1.setDrawIcons(false);
            set1.setLineWidth(4f);
            set1.setCircleRadius(5f);
            set1.setDrawCircleHole(false);
            set1.setValueTextSize(10f);
            set1.setFormLineWidth(1f);
            set1.setFormSize(15.f);
            set1.setColor(Color.BLACK);
            set1.setCircleColor(Color.BLACK);

        }
        ArrayList<ILineDataSet> dataSets = new ArrayList<>();
        dataSets.add(set1);
        LineData data = new LineData(dataSets);
        mChart.setData(data);
        mChart.notifyDataSetChanged();
        mChart.invalidate();

******
        if (getArguments() != null) {
            Log.e("if", "if reached");
            float myDataSet = Float.parseFloat(getArguments().getString("INPUT"));
            Log.e("data", "data retrieved");
            float count = 0;
            float mcount = count + 1;
            values.add(new Entry(1, 4));
            values.add(new Entry(mcount, myDataSet));
        }
******

        mChart.notifyDataSetChanged();
        mChart.invalidate();

    }
    @Override
    public void onResume(){
        super.onResume();
        Log.e("resume", "onResume reached");
        setData();
    }
}

Tabbed.java (базовый класс Java)фрагмента)

//getting inputs from room and putting them into the view in table
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mInputViewModel = ViewModelProviders.of(this).get(InputViewModel.class);
        //only add if there is a new input
        Log.e("result1","onActivityResult tabbed reacher");
        if (requestCode == INPUT_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
            //retrieve input from room database
            Input1 input1 = new Input1(data.getStringExtra(input.EXTRA_REPLY));
            //insert the inputs into the view model of the recyclerView
            mInputViewModel.insert(input1);

            //convert the String input1 to a double
            Double d = Double.parseDouble(input1.getValue());

*****
            //send d value to graph.java
            Bundle bundle = new Bundle();
            Log.e("Testing", "Bundle made");
            bundle.putString("INPUT", String.valueOf(d));
            Graph myObj = new Graph();
            myObj.setArguments(bundle);
*****
            }

            //display pop-up if no input is added don't save the input
        } else {
            Toast.makeText(
                    getApplicationContext(),
                    R.string.empty_not_saved,
                    Toast.LENGTH_LONG).show();
        }
    }

Я пометил пакет и получил код с ****.Из моей записи в журнале я знаю, что код пакета работает и метод setdata () работает, но оператор 'if' никогда этого не делает.Я добавил код if (getArguments() != null) {, чтобы избежать исключения java.lang.nullPointerException.

Я думаю, что данные объединяются корректно, но по какой-то причине они становятся нулевыми во фрагменте.Возможно, некоторые из них написаны неправильно - это моя первая попытка использования комплектов.

РЕДАКТИРОВАТЬ: у меня настроен класс модели liveata и View, но я не уверен, как их реализовать для обновления данных.

InputViewModel.java

    private InputRepository mRepository;
    private LiveData<List<Input1>> mAllInput1s;
    public InputViewModel (Application application) {
        super(application);
        mRepository = new InputRepository(application);
        mAllInput1s = mRepository.getAllInput1s();
    }
    LiveData<List<Input1>> getAllInput1s() {return mAllInput1s;}
    void insert(Input1 input1) {mRepository.insert(input1);}
}
...