我有一个片段我在其中发送HTTP请求以获取数据并在页面上显示数据。之后点击按钮我想刷新这个片段。我的意思是再说一次点击按钮我想发送HTTP请求以从服务器获取新数据并将数据显示到片段中。
这是按钮点击
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
FragmentCall
fragTran.replace(R.id.content_frame, mainFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
这就是我们以前调用Fragments的方法,这是一种正确的方法
在解除对话后,我想再次调用相同的片段。
答案 0 :(得分:2)
所以你想要与新数据相同的片段。 让我们假设您在名为MyData的类的对象中有新数据
现在您可以做的是,在收到的数据上重新加载您的片段。其中重新加载意味着再次设置数据。
案例:您获得了片段之外的数据。如何使用该数据刷新片段
步骤1:保持片段实例可用于您的活动。
步骤2:创建一个方法relaodFragment,如下面[在你的片段中]给出的。
public void reloadFragment(MyData data) {
if (data != null) {
//reload your views with new data. using setters of all views.
}
}
第3步:每当您感觉自己拥有新数据时,请调用此方法。
案例2:在相同片段上检索数据:
让你按照这样的方式实施:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Gson gson = new Gson();
MyData data =gson.fromJson(getDataFromServer(param1, param2), MyData.class);
populateViewsWithData(data);
}
public void populateViewsWithData(MyData data)
{
// set data to views ..............
}
public String getDataFromServer(String param1,String param2)
{
// your logic to retrive data ... this method returns JSON you want to work with ..
}
@Override
public void onClick(View view) {
Gson gson = new Gson();
MyData data =gson.fromJson(getDataFromServer(param1, param2), MyData.class);
populateViewsWithData(data);
// congrates!.. fragment is reloaded again............
}
答案 1 :(得分:0)
在setHasOptionsMenu(true);
onCreateView();
)
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.refresh_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_refresh) {
REFRESH YOUR JSON
return true;
} else {
return false;
}
}
答案 2 :(得分:0)
您不需要以新的方式调用相同的片段。相反,您可以通过加载新数据来刷新视图。为此类要求设计的PullToRefresh库,您可以再次调用api并刷新视图。此库不仅适用于listview
,还适用于包含GridView, ScrollView and WebView