Ado*_*oro 7 android listview android-fragments android-viewpager
我有ViewPager
3 个片段;在我处理的主要活动中onPageChangeListener
:
private class CustomPageChangeListener extends ViewPager.SimpleOnPageChangeListener{
@Override
public void onPageSelected(int position) {
fragments.get(position).onShowedFragment(context);
super.onPageSelected(position);
}
}
Run Code Online (Sandbox Code Playgroud)
调用onShowedFragment(context)
将数据加载到片段中(我按需加载数据)。我将数据加载到一个ListView
:
@Override
public void onShowedFragment(Context context) {
databaseService = DatabaseService.getInstance(context);
mAdapter = new Capitulo100ListAdapter(context);
databaseService.capitulo100ObjectSet.setAdapter(mAdapter);
lst100.setAdapter(mAdapter);
try {
//load my data
} catch (Exception e) {
//...
}
super.onShowedFragment(context);
}
Run Code Online (Sandbox Code Playgroud)
当我旋转设备时,Android 重新创建 Activity 并调用onPageSelected
,并调用onShowedFragment
我片段上的方法,但当时调用lst100的 ListView为空(我在片段的 onCreateView 方法中初始化视图),然后该行lst100.setAdapter(mAdapter)
导致一个错误。
我没有使用 android:configChanges
在设备旋转后创建 ListView 时,如何上传我的数据?
private class CustomPageChangeListener extends ViewPager.SimpleOnPageChangeListener{
@Override
public void onPageSelected(int position) {
// call super.onPageSelected() before onShowedFragment()
super.onPageSelected(position);
fragments.get(position).onShowedFragment(context);
}
}
Run Code Online (Sandbox Code Playgroud)
//在onCreateView()中初始化视图
databaseService = DatabaseService.getInstance(context);
mAdapter = new Capitulo100ListAdapter(context);
databaseService.capitulo100ObjectSet.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)
//如果列表不为空,则setAdapter。
@Override
public void onShowedFragment(Context context) {
if(lst!=null)
lst100.setAdapter(mAdapter);
try {
//load my data
} catch (Exception e) {
//...
}
super.onShowedFragment(context);
}
Run Code Online (Sandbox Code Playgroud)
//如果仍然不起作用,请使用 MVVM 架构组件。它将处理与活动重新创建相关的所有问题。
归档时间: |
|
查看次数: |
464 次 |
最近记录: |