【发布时间】:2017-08-07 10:21:17
【问题描述】:
我需要第一次从服务器中提取数据。当从另一个fragment 按下返回button 时,应该恢复以前的视图,但不要再次重新创建视图并再次从服务器中提取数据。
我的fragment部分内容如下:
AttendanceFragment.cs
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
.......
if (savedInstanceState == null)
{
rootView = inflater.Inflate(Resource.Layout.AttendanceListview, container, false);
}
.........
// this is where I get data from WebServer
GetClassSection(); // I am confused here where to put this method and pull data from server
listView.ItemClick += OnListItemClick;
return rootView;
}
public override void OnSaveInstanceState(Bundle outState)
{
base.OnSaveInstanceState(outState);
outState.PutString("_dataGotFromServer", dataGotFromServer);
}
从button 登陆到这个fragment 时点击
我已经用这种方式替换了fragment
public void ReplaceFragment(Context context, Fragment newFragment, string TAG)
{
Android.Support.V4.App.FragmentManager fragmentManager = ((FragmentActivity)context).SupportFragmentManager;
Android.Support.V4.App.FragmentTransaction ft = fragmentManager.BeginTransaction();
ft.Replace(Resource.Id.HomeFrameLayout, newFragment);
ft.AddToBackStack(TAG);
ft.Commit();
}
BaseAdapter 在这里初始化
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
dataList = new List<DA_ClassSectionAttendance>();
attendanceAdapter = new AttendanceListAdapter(this.Activity, dataList);
// Create your fragment here
//set whether MenuOption show/hide from toolbar
HasOptionsMenu = true;
}
并且我的适配器设置在这里
public override void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
dataGotFromServer = savedInstanceState.GetString("_dataGotFromServer"); // savedInstanceState always gets null here
listView.Adapter = attendanceAdapter;
}
我的数据从服务器中提取并在 ui 中更新
private async void GetClassSection()
{
try
{ ...........
Activity.RunOnUiThread(async () => {
await Task.Delay(1 * 100);
attendanceAdapter.NotifyDataSetChanged();
progress.Visibility = ViewStates.Gone;
});
}
catch (Java.Lang.Exception e)
{
}
}
谢谢。
【问题讨论】:
标签: android android-fragments xamarin.android