Обновление фрагмента при выборе опции AlertDialog - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь обновить фрагмент при выборе параметра в диалоговом окне предупреждения, чтобы новые данные отображались в таблице. Пробовал различные методы, такие как упомянутый в этой ссылке здесь Обновить фрагмент при перезагрузке . но получал нулевое исключение. Данные хранятся в sql db, поэтому фрагмент необходимо обновить. Может кто-нибудь направить меня в правильном направлении.

MainActivity

   TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setText("Cinema"));
    tabLayout.addTab(tabLayout.newTab().setText("Trailers"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
    final TextView mText = (TextView) findViewById(R.id.editSearch);
    listItems = getResources().getStringArray(R.array.location_item);
    mText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
            mBuilder.setTitle("Choose a location");
            mBuilder.setSingleChoiceItems(listItems, -1, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mText.setText(listItems[i]);
                    dialogInterface.dismiss();

                }

            });
            AlertDialog mDialog = mBuilder.create();
            mDialog.show();
        }

    });

PagerAdapter

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;


public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            MovieFragment tab1 = new MovieFragment();
            return tab1;
        case 1:
            TrailerFragment tab2 = new TrailerFragment();
            return tab2;
        default:
            return null;
    }
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}

Фрагмент фильма

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_movie, container, false);
     progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
    mGridView = (GridView) view.findViewById(R.id.gridview);

    mGridAdapter = new GridAdapter(getContext(),R.layout.grid_item,movie);

    mGridView.setAdapter(mGridAdapter);
    mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent i;

                    i = new Intent(MovieFragment.this.getActivity(),MovieDetail.class);

                    i.putParcelableArrayListExtra("array",movie);
                    i.putExtra("id",position);

                    startActivity(i);



        }
    });

    if(savedInstanceState!=null){
        movie = savedInstanceState.getParcelableArrayList(STATE_MOVIE);
        mGridAdapter.setGridData(movie);
    }
    else{
        getData();
    }

    return view;


  }
...