Как обновить данные в DialogFragment при следующем его вызове?

Из основного активити по нажатию на элемент списка ListView вызываю DialogFragment и передаю ему параметры. При первом вызове данные отображаются верно, а вот при каждом следующем вызове данные передаются, но DialogFragment отображает старые данные. Как сделать чтобы оботражалсь новые данные?
Код вызова DialogFragment из Активити:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String dst, prc, fspd, raz, tm, rspd = "";
        Cursor c = db.getrec((int) id);
        c.moveToFirst();
        int firstrec = Integer.parseInt(c.getString(c.getColumnIndex("_id")));
        dst = c.getString(c.getColumnIndex("dist"));//Дистанция
        prc = c.getString(c.getColumnIndex("prc"));//Процент
        fspd = c.getString(c.getColumnIndex("fsp"));//ПДД
        raz = c.getString(c.getColumnIndex("raz"));//Разница
        tm = c.getString(c.getColumnIndex("tm"));//Время сектора
        rspd = c.getString(c.getColumnIndex("rsp"));

        Bundle args = new Bundle();
        args.putInt("id", (int) id);
        args.putString("dist", dst);
        args.putString("prc", prc);
        args.putString("fspd", fspd);
        args.putString("raz", raz);
        args.putString("rspd", rspd);
        args.putString("tm", 
        dlgrdlistchange.setArguments(args);
        dlgrdlistchange.show(getFragmentManager(),"dlgrdlistchange");


Код DialogFragmnet:
public class rdlistchange extends DialogFragment implements OnClickListener {

    private OnCompliteListener mListener;
    private EditText listeditdist;
    private EditText listeditpercent;
    private EditText listeditspeed;
    final String LOG_TAG = "myLogs";
    private String dist, fspd, prc, raz, rspd, tm;
    Integer args;

    public rdlistchange(OnCompliteListener listener) {
        this.mListener = listener;
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        args = getArguments().getInt("id");
        dist = getArguments().getString("dist");
        prc = getArguments().getString("prc");
        fspd = getArguments().getString("fspd");
        raz = getArguments().getString("raz");
        rspd = getArguments().getString("rspd");
        tm = getArguments().getString("tm");

        getDialog().setTitle("Измените параметры участка РД");
        View v = inflater.inflate(R.layout.rdlistchange, null);
        v.findViewById(R.id.btnYes).setOnClickListener(this);
        v.findViewById(R.id.btnNo).setOnClickListener(this);
        listeditdist = (EditText) v.findViewById(R.id.listeditdist);
        listeditpercent = (EditText) v.findViewById(R.id.listeditpercent);
        listeditspeed = (EditText) v.findViewById(R.id.listeditspeed);
        listeditdist.setText(dist);
        listeditspeed.setText(fspd);
        listeditpercent.setText(prc);
        return v;
    }

    public void onClick(View v) {
        Log.d(LOG_TAG, "Dialog 1: " + ((Button) v).getText());
        switch (v.getId()){
            case R.id.btnYes:
                 double rsec = Double.valueOf(String.valueOf(Double.valueOf(tm)/1000));
                double rmin = rsec/60;
                double rhour = rmin/60;
                double zspeed = Double.valueOf(listeditspeed.getText().toString())*(Double.valueOf(listeditpercent.getText().toString())/100);
                double draz = (((rhour*(Double.valueOf(rspd)-zspeed))/zspeed)*3600);
                raz = String.valueOf(roundResult(draz));
                mListener.onComplete(listeditdist.getText().toString(), listeditpercent.getText().toString(), listeditspeed.getText().toString(),args, raz);
                dismiss();
                break;
            case R.id.btnNo:
                dismiss();
                break;
        }
    }

    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
        Log.d(LOG_TAG, "Dialog 1: onDismiss");
    }


    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
        Log.d(LOG_TAG, "Dialog 1: onCancel");
    }

    double roundResult (double d) {
        d = d*10;
        int i = (int) Math.round(d);
        return (double) i/10;
    }
}
  • Вопрос задан
  • 2499 просмотров
Пригласить эксперта
Ответы на вопрос 3
@nonrblGyN4ik
Вы данные берете из базы данных, передаете их в dialogFragment, потом что-то с ними делаете, но обратно в базу данных ничего не сохраняете.
Ответ написан
Комментировать
@Afdenis Автор вопроса
Обратно я сохраняю в основном активити:
dlgrdlistchange = new rdlistchange(new OnCompliteListener() {
            @Override
            public void onComplete(String dist, String percent, String speed, Integer id, String raz) {
db.editRec(dist, percent, null, id, raz, null, speed);
getSupportLoaderManager().getLoader(0).forceLoad();
}}

Но в данном случае это не важно, т.к. проблема в другом, как мне обновить dialogFragment с новыми переданными в него данными?
Ответ написан
Комментировать
@Tiberal
Проверь удаляется ли старый диалогфрагмент из фрагммент менеджера, его закрытия
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы