Я прочитал некоторый вопрос об этой проблеме, но я не могу ее решить.Обновление ListView (в фрагменте) после отклонения Dialog
У меня было так:
public class Classwork extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homework);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a DummySectionFragment (defined as a static inner class
// below) with the page number as its lone argument.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
args.putInt("posizione", position);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
//code for number of pages
}
@Override
public CharSequence getPageTitle(int position) {
//code for return the title
}
}
public class DummySectionFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//query to populate ListView
//ListView with CustomAdapter
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
//Start new activity DialogDeleteAddGradeCopy
}
});
myDbHelper.close();
return rootView;
}
}
}
Я создал его с помощью мастера Eclipse. DummyFragment содержит ListView, который заполняется (правильно) SQLite-запросом. С помощью щелчка на элементе ListView отображается диалоговое окно (на самом деле это действие со стилем диалога).
Диалог:
public class DialogDeleteAddGradeCopy extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//retrive data form Intent for the update in the db
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//update the db
finish();
}
}
});
}
Этот диалог позволяет пользователю обновлять (с дб запроса) одного из значений щелкнутыми пункта. Все работает нормально, кроме обновления фрагмента. Запрос на обновление в порядке (db обновляется, когда диалог закрыт), но для обновления фрагмента мне нужно дважды или дважды прокручивать вправо или влево и поворачивать назад (таким образом, фрагмент воссоздается, поэтому все работает отлично).
Как я могу заставить обновить/воссоздать Фрагмент?
Заранее спасибо.
Извините за мой плохой английский ...
Попробуйте CustomAdapter.notifyDataSetChanged() в onResume() вашего фрагмента – nicous
Ничего не происходит ... onResume() вызывается, когда диалог отклоняется (finish()), но при этом не обновляется ListView. Спасибо, в любом случае. – rivamarco