Я хочу обновить / перезагрузить фрагмент сразу после возврата из действия, которое изменило его значения.
- Я открыл действие из моего фрагмента
- В этом действии я обновил некоторые SQL, которые отображаются во фрагменте
- Затем я вернулся к фрагменту, используя
finish();
, который отправляет меня обратно к фрагменту
Я пробовал использовать onResume()
с adapter.notifyDataSetChanged()
, но это привело к сбою приложения с этой ошибкой:
Attempt to invoke virtual method 'void com.example.tomaspap.ItemMySerieRecyclerView.MyAdapterItemMySerie.notifyDataSetChanged()' on a null object reference
Код фрагмента:
publi c класс SeriesFragment расширяет фрагмент {
private static final String TAG = "MySeriesFragment";
private final String URLBASIS = "https://api.themoviedb.org/3/tv/";
private final String URLAPIKEY = "?api_key=4946fe5b625b70f37a13e1fe882451a4";
private final String imagebaseurl = "http://image.tmdb.org/t/p/w500";
RecyclerView mRecyclerView;
MyAdapterItemMySerie mAdapter;
String serieid;
String watchstate;
private ArrayList<MySerieModel> models;
private RequestQueue mRequestQueue;
private JsonObjectRequest request;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_series, container, false);
models = new ArrayList<>();
mRecyclerView = v.findViewById(R.id.series_recyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mAdapter = new MyAdapterItemMySerie(getContext(), models);
//mRecyclerView.setAdapter(mAdapter);
return v;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DBHelper db = new DBHelper(getContext());
Cursor cursor = db.Select_All_Serie();
models = new ArrayList<>();
cursor.moveToFirst();
if(cursor.getCount()==0){
Toast.makeText(getContext(), "NO SERIES", Toast.LENGTH_SHORT).show();
}
if(cursor.getCount() > 0){
do {
serieid = cursor.getString(cursor.getColumnIndex("serieid")).toString();
watchstate = cursor.getString(cursor.getColumnIndex("watchstate")).toString();
Integer yourrate = cursor.getInt(cursor.getColumnIndex("yourrate"));
Integer watchedeps = cursor.getInt(cursor.getColumnIndex("watchedeps"));
mRequestQueue = Volley.newRequestQueue(getContext());
parseJSON(serieid, watchstate);
models.add(new MySerieModel(serieid, watchstate, yourrate, watchedeps));
} while (cursor.moveToNext());
}
// Toast.makeText(getContext(), String.valueOf(models.size()), Toast.LENGTH_SHORT).show();
}
private void parseJSON(final String serieid, final String watchstate){
String url = URLBASIS + serieid + URLAPIKEY;
request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String title = (response.getString("name"));
String nextepfinal = "";
try {
JSONObject jsonArraynextep = (response.getJSONObject("next_episode_to_air"));
nextepfinal = jsonArraynextep.getString("air_date");
}catch(JSONException e){}
String state = (response.getString("status"));
// String serieid = (response.getString("id"));
String imageurl = (response.getString("poster_path"));
String image = imagebaseurl + imageurl;
MySerieModel serie = new MySerieModel(title, nextepfinal, state, watchstate, serieid, image);
models.add(serie);
} catch (JSONException e) {
e.printStackTrace();
return;
}
mAdapter = new MyAdapterItemMySerie(getContext(), models);
mRecyclerView.setAdapter(mAdapter);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mRequestQueue.add(request);
}
@Override
public void onResume()
{
super.onResume();
models.clear();
mAdapter.notifyDataSetChanged();
}
Спасибо Вам за помощь.