先生,我必须将单个片段用于多个标签。我已经使用 FragmentStatePagerAdapter 实现了它,但是在调试之后我得到了一些选项卡显示数据但不正确。这是因为 getItem被调用两次请尽早帮助我。
我从getItem传递了参数。它作为getItem调用两次传递参数两次。因此它会覆盖参数数据。我有6个选项卡,但只有1,3和5个选项卡显示数据,但数据是第2,4和第6个选项卡,第2,4和第6个选项卡在屏幕上没有显示任何内容。
以前的问题没有解决任何问题。
ViewPager代码
<html>
<head>
<title>Test app</title>
<style type="text/css">
#fetch{
position: absolute;
text-align: center;
left: 450px;
top: 35px;
}
</style>
</head>
<body>
<form name="fetch-movie-title" id="fetch">
<input type="text" placeholder="Enter a movie title" id="term" />
<input type="submit" onclick="showdata()" id="search" value="Find me a poster" />
</form>
<script type="text/javascript">
function showdata() {
var film = document.getElementById('term').value;
console.log(film);
var requestURL = "https://api.themoviedb.org/3/search/movie?api_key=<<api_key>>&language=en-US&query="+film+"&page=1&include_adult=false";
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function(){
var myjsondata = request.response; //request.response contains all our JSON data
console.log(myjsondata);
var str = "<img src = 'https://image.tmdb.org/t/p/w500"+ myjsondata.results[0].poster_path+"'/>";
console.log(str);
document.write(str);
}
</script>
</body>
</html>
}
更改标签的监听器:
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
int TAB_COUNT=5;
Context mContext;
public ViewPagerAdapter(FragmentManager fm,Context context) {
super(fm);
mContext=context;
}
@Override
public Fragment getItem(int position) {
NewsFragment fragment = new NewsFragment();
Bundle args = new Bundle();
args.putString("title", String.valueOf(getPageTitle(position)));
args.putString("data", "data");
fragment.setArguments(args);
return fragment;
}
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getStringArray(R.array.tabs)[position];
}
@Override
public int getCount() {
return TAB_COUNT;
}
适配器设置
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onPageSelected(int position) {
TabLayout.Tab tab = tabLayout.getTabAt(position);
if (tab != null) {
tab.select();
}
}
答案 0 :(得分:0)
为了帮助您进一步向我们展示NewsFragment的代码。
此外,您可能会考虑使用FragmentPagerAdapter而不是FragmentStatePagerAdapter,因为您似乎有固定数量的选项卡(在您的示例中为5)并且根据文档是FragmentPagerAdapter的用例。
我在上面链接的页面中的文档:
当有一些通常更多的静态片段被分页时,这个版本的寻呼机最适合使用,例如一组标签。