Fragment中获取网络数据的问题

2在路上 2013-04-12 11:21:37



public class FragmentTabChanel extends Fragment{

private final String TAG = "FragmentTabChanel";

private String[] CONTENT;

private ViewPager pager;
private TabPageIndicator indicator;


@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new GetLiveShowTitlesTask().execute();
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tv_channel, container, false);

pager = (ViewPager) view.findViewById(R.id.pager);
indicator = (TabPageIndicator) view
.findViewById(R.id.indicator);


indicator.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageScrollStateChanged(int arg0) {

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
Log.v(TAG, "onPageSelected::" + position);
((SlidingFragmentActivity) getActivity())
.getSlidingMenu()
.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
break;
default:
Log.v(TAG, "onPageSelected::" + position);
((SlidingFragmentActivity) getActivity()).getSlidingMenu()
.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
break;
}

}

});


return view;
}

class GoogleMusicAdapter extends FragmentPagerAdapter {
public GoogleMusicAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
}

@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length].toUpperCase();
}

@Override
public int getCount() {
return CONTENT.length;
}

}

/**
* 获取直播电视台名称
*
* @author Administrator
*/
private class GetLiveShowTitlesTask extends AsyncTask<Void, Void, Void>
{
private String returnJsonStr;


private List<LiveChannelTypeModel> mTypeModels;

@Override
protected void onPreExecute()
{
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params)
{

NetGet netGet = new NetGet(constant.LIVE_CATEGORY);
returnJsonStr = netGet.doGetNoPass();
Log.d(TAG,"电视频道返回的json:"+returnJsonStr);
mTypeModels = new ArrayList<LiveChannelTypeModel>();

try
{
if (null != returnJsonStr)
{
JSONArray jsonArray = new JSONArray(returnJsonStr);
if (null != jsonArray)
{
for (int i = 0; i < jsonArray.length(); i++)
{
LiveChannelTypeModel model = new LiveChannelTypeModel();

JSONObject jsonObj = jsonArray.getJSONObject(i);
model.setM_id(jsonObj.getString("m_id"));
String m_title_name = LiveUtil.decodeURL(jsonObj.getString("m_title"));
model.setM_title(m_title_name);

mTypeModels.add(model);
}
}
}
}
catch (JSONException e)
{
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);

if (null != mTypeModels && !mTypeModels.isEmpty())
{
// Intent intent = new Intent();
// intent.putExtra("mTypeModels", (Serializable)mTypeModels);

// intent.setClass(LiveLookback_refresh_activity.this, LiveLookback_main.class);
// startActivity(intent);

for(int i = 0; i < mTypeModels.size(); i++){
CONTENT[i] = mTypeModels.get(i).getM_title();
}

Log.d(TAG,"频道tab名字"+CONTENT);

FragmentPagerAdapter adapter = new GoogleMusicAdapter(getActivity()
.getSupportFragmentManager());

pager.setAdapter(adapter);

// pager.setCurrentItem(0);
((SlidingFragmentActivity) getActivity()).getSlidingMenu()
.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);



indicator.setViewPager(pager);

// LiveLookback_refresh_activity.this.finish();
}
else
{
// loading_ll.setVisibility(View.GONE);
// nodatas_ll.setVisibility(View.VISIBLE);
}
}
}

}
报错信息如下:
04-12 23:20:56.953: E/AndroidRuntime(31892): java.lang.IllegalStateException: ViewPager has not been bound.
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.viewpagerindicator.TabPageIndicator.setCurrentItem(TabPageIndicator.java:243)
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.viewpagerindicator.TabPageIndicator.onMeasure(TabPageIndicator.java:117)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1017)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.onMeasure(LinearLayout.java:555)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2099)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.View.measure(View.java:12755)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2445)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.os.Looper.loop(Looper.java:137)
04-12 23:20:56.953: E/AndroidRuntime(31892): at android.app.ActivityThread.main(ActivityThread.java:4510)
04-12 23:20:56.953: E/AndroidRuntime(31892): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 23:20:56.953: E/AndroidRuntime(31892): at java.lang.reflect.Method.invoke(Method.java:511)
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:947)
04-12 23:20:56.953: E/AndroidRuntime(31892): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:714)
04-12 23:20:56.953: E/AndroidRuntime(31892): at dalvik.system.NativeStart.main(Native Method)

json的数据已经拿到了,说我viewpage has not been bound。其实我就是想通过网络获得频道名称,有没有好的解决办法呢
...全文
257 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyxel60b 2013-04-13
  • 打赏
  • 举报
回复
这个应该不是Fragment的问题 因为这个错误是TabPageIndicator 报的,原因是你在初始化的时候没有设置TabPageIndicator 的ViewPager

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧