Какой лучший способ обновить фрагмент из класса неактивности? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть фрагмент с кнопкой, которая добавляет новый элемент в RecycleView, и этот RecycleView находится в отдельном классе на адаптере.Каждый элемент в этом RecycleView имеет кнопку редактирования, которая открывает AlertDialog, в котором я редактирую элемент, и после завершения редактирования я хотел обновить фрагмент, тот же, который я хотел, когда я нажимал кнопку удаления.notifyDataSetChanged(); это не работает для меня и не будет полезно, поскольку мне нужно обновить TextView не только до RecycleView.

Я пытался вызвать метод RefreshFragment(), но приложение вылетало.

В MyFragment.java:

public class MyFragment extends Fragment   {
private MyAdapter mAdapter;

[...]

public void RefreshFragment() {
        FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
        ft.detach(MyFragment.this).attach(MyFragment.this).commit();

    }
}

В MyAdapter.java:

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> implements Filterable{

private MyFragment my_fragment;

[...]

 private void editTaskDialog(){

AlertDialog.Builder builder = new AlertDialog.Builder(context);

   builder.setTitle("Edit product");
        builder.setView(subView);
        builder.create();

        builder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                    final int id = productList.get(position);
                    final String name= Name.getText().toString();
                    final int price= Integer.parseInt(Price.getText().toString());

                        mDatabase.updateProduct(id, name, price);

                        //REFRESH FRAGMENT HERE
                        my_fragment.RefreshFragment();
            }
        });

        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(context, "Canceled.", Toast.LENGTH_LONG).show();
            }
        });
        builder.show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...