C++:oncreate方法的问题?

CMainFrame OnCreate 遇到的有关问题
CMainFrame OnCreate 遇到的有关问题
发布时间: 5:04:34
编辑:www.fx114.net
本篇文章主要介绍了"CMainFrame OnCreate 遇到的有关问题",主要涉及到CMainFrame OnCreate 遇到的有关问题方面的内容,对于CMainFrame OnCreate 遇到的有关问题感兴趣的同学可以参考一下。
CMainFrame OnCreate 遇到的有关问题CMainFrame OnCreate 遇到的问题int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ hostent* phost = gethostbyname(&&); char* localIP = inet_ntoa (*(struct in_addr *)*phost-&h_addr_list); sockaddr_ addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = inet_addr(localIP); addr.sin_port = htons(5001); //创建套接字 m_Socket = socket(AF_INET,SOCK_DGRAM,0); if (m_Socket == INVALID_SOCKET) { MessageBox(&套接字创建失败!&); & return -1; } char* len = &512&; if (setsockopt(m_Socket,SOL_SOCKET,SO_SNDBUF,len,4)!= 0) { MessageBox(&设置失败!&); } //绑定套接字 if (bind(m_Socket,(sockaddr*)&addr,sizeof(addr))==SOCKET_ERROR) { DWORD dwError=::GetLastError(); } //m_ServerIP=sys.sysinfo.ServerIp; 1:WSAAsyncSelect(m_Socket,this-&m_hWnd,CM_RECEIVED,FD_READ); ////////////////////////////////////////////////////////////////////////// //2::PostMessage(this-&GetSafeHwnd(),WM_USERMSG,0,0); & return 0;}CM_RECEIVED----------对应相应消息函数void CMainFrame::OnReceived(){ & //这里我删除了所有的代码 & //为空}--------------------------------------------当从客户端想端口5001发送请求的时候程序就会异常结束
C/C++ code
//MainFrm.h
#define CM_RECEIVED WM_USER+101
//{{AFX_MSG(CMainFrame)
afx_msg void Onrecved(SOCKET sock, long lEvent);
//}}AFX_MSG
//MainFrm.cpp
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
ON_MESSAGE(CM_RECEIVED,OnReceived)
END_MESSAGE_MAP
void CMainFrame::OnReceived(SOCKET sock, long lEvent)
本文标题:
本页链接:4779人阅读
项目心得(22)
当用户需要同时对文当的不同部分进行编辑时,常常会用到切分窗口;这些窗口可以都是相同的视,或者一个窗口为列表视,而另一个为树型视图。应用程序框架有多种方式来表示多视图,切分窗口是其中的方式之一。
  一、引用  当用户需要同时对文当的不同部分进行编辑时,常常会用到切分窗口;这些窗口可以都是相同的视,或者一个窗口为列表视,而另一个为树型视图。应用程序框架有多种方式来表示多视图,切分窗口是其中的方式之一。
  切分窗口分为动态切分窗口和静态切分窗口,它们都是由CsplitterWnd类(MFC类库)来实现的,在这两种表示方式中,创建同一视图类的对象是比较容易的(Cview),而在同一应用程序使用两个或更多的视图类(如:ClistView、CtreeView等),相对来说则要困难一些。
  动态切分功能多应用在编辑文本类的软件中,在实际的开发中,我们经常要用到的是静态切分功能。静态切分窗口是指在窗口创建时,切分窗口的窗格就已经创建好了,且窗格的数量和顺序不会改变,窗格为一个分隔条所分隔,用户可以拖动分隔条调整相应窗格的大小。静态切分窗口最多支持16行&16列的窗格,而且不同的窗格往往使用不同的视图类。本文主要阐述静态切分窗口。
  二、实例
  以单文档SDI应用程序为例,在框架客户区实现三叉切分窗口,且每个窗格使用不同的视图 。
  实现步骤:
  1、 利用VC++6.0 的AppWizard创建一个单文档SDI应用程序,项目名为Test。
  2、 使用New Class对话框添加新的视图类:
  CinfoView 基类为列表视图类ClistView
  CLineView 基类为表单视图类CFormView
  CMyEditView 基类为编辑视图类CEditView
  要点:在添加ClineView之前,需要先创建一个对话模板资源,ID为IDD_FORMVIEW,
  3、 在框架窗口类CMainFrame中声明一个CsplitterWnd类的成员变量m_wndSplitter1,用于第一次切分。
  4、 使用ClassWizard为框架窗口类添加OnCreateClient函数。
  注意:OnCreateClient函数的调用在OnCreate函数之后,在构造视图对象和产生视图窗口之前。
  5、 在OnCreateClient函数中调用CsplitterWnd::CreateStatic,产生静态切分。该函数的原形如下:
  BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle =
  WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );
  函数有5个参数,意义如下:
  ● pParentWnd:切分窗口的父窗口指针
  ● nRows:水平方向分隔窗口的数目
  ● nCols:垂直方向分隔窗口的数目
  ● dwStyle:切分窗口的风格
  ● nID:子窗口的ID值,默认为系统定义的AFX_IDW_PANE_FIRST
  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。
  m_wndSplitter1.CreateStatic(this, 2,1); // 切分为2行1列
  6、 使用CreateView产生每个视图窗口
  virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );
  函数有5个参数,意义如下:
  ● row:窗格的行标,从0开始
  ● col:窗格的列标,从0开始
  ● pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得
  ● sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小
  ● pContext:一般是由父窗口传递过来,包含窗口的创建信息
  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。
  OnCreateClient函数的全部代码:
  BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
  // TODO: Add your specialized code here and/or call the base class
  GetClientRect(&rect);
  //产生第一次静态切分
  m_wndSplitter1.CreateStatic(this, //父窗口指针
  2, // 切分的行数
  1); // 切分的列数
  //为第一个窗格产生视图
  m_wndSplitter1.CreateView(0,0, // 窗格的行、列序数
  RUNTIME_CLASS(CTestView),//视图类
  CSize(rect.Width(),rect.Height()-rect.Height()/5),//初始化大小
  pContext);//父窗口的创建参数
  //为第二个窗格产生视图
  m_wndSplitter1.CreateView(1,0,
  RUNTIME_CLASS(CMyEditView),
  CSize(rect.Width(),rect.Height()/5),
  pContext);
  return TRUE;//不再调用基类的OnCreateClient函数
  //return CFrameWnd::OnCreateClient(lpcs, pContext);
  在这里需注意3点:
  ① 必须为每个静态切分窗格创建视图窗口,不能漏掉一个;
  ② 必须包含相应的类的头文件,在MainFrm.cpp文件的开始包含一下头文件:
  #include "TestView.h"
  #include "MyEditView.h"
  ③产生静态切分后,就不能调用默认的基类的OnCreateClient函数。
  7、 在视图窗口类CTestView中声明一个CsplitterWnd类的成员变量m_wndSplitter2,用于第二次切分。
  8、 使用ClassWizard为视图窗口类CTestView添加OnCreate函数,在该函数中调用CreateStatic函数和CreateView函数,类似CMainFrame::OnCreateClient函数中的调用
  代码如下:
  int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  if (CView::OnCreate(lpCreateStruct) == -1)
  return -1;
  // TODO: Add your specialized creation code here
  GetClientRect(&rect);
  //获得窗口的创建信息指针
  CCreateContext *pContext = (CCreateContext*) lpCreateStruct-&lpCreateP
  //产生二次静态切分
  m_wndSplitter2.CreateStatic(this,1, 2);
  //为第一个窗格产生视图
  m_wndSplitter2.CreateView(0,0,// 窗格的行、列序数
  RUNTIME_CLASS(CLineView),//视图类
  CSize(rect.Width()/4,rect.Height()),//初始化大小
  pContext);//父窗口的创建参数
  //为第二个窗格产生视图
  m_wndSplitter2.CreateView(0,1,
  RUNTIME_CLASS(CInfoView),
  CSize(1,1),
  pContext);
  return 0;
  注意:二次切分的父窗口是第一次切分的第一个窗格,其视图类是CTestView
  9、使用ClassWizard为视图窗口类CTestView添加OnSize函数,在该函数中调用子函数
  SwitchView(),子函数的代码如下:
  void CTestView::SwitchView()
  GetClientRect(&rect);
  int cx = rect.Width();
  int cy = rect.Height();
  m_wndSplitter2.MoveWindow(-2,-2,cx,cy+3);
  m_wndSplitter2.SetColumnInfo(0, cx/4,0);
  m_wndSplitter2.SetColumnInfo(1, cx-cx/4, 0);
  m_wndSplitter2.RecalcLayout();
  该子函数主要用于设置二次切分后的各列信息,通过CSplitterWnd::SetColumnInfo函数实现,原型为:void SetColumnInfo( int col, int cxIdeal, int cxMin );
  由3 个参数,意义如下:
  ● col:切分窗口的列标识
  ● cxIdeal:列的实际宽度,单位为像素
  ● cxMin:列的最小宽度,单位为像素
  本示例的运行结果如下:
  三、总结
  切分窗口的形式和每个窗格所使用的视图类可以根据实际需要来确定,以满足程序的不同应用。本示例使用了三叉切分,视图类使用了列表视图类CListView、表单视图类CFormView、编辑视图类CEditView,在VC++6.0下调试通过。
  三叉切分的方法并不唯一,本文实例是我在实际开发中总结的一种方法,读者可以通过本例举一反三,掌握切分窗口与多视图相结合的精髓所在
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:132742次
积分:2014
积分:2014
排名:第14893名
原创:61篇
转载:18篇
评论:19条
(2)(4)(2)(7)(4)(5)(4)(8)(8)(1)(7)(6)(20)(1)onCreate ListView error: not a statement - Android [onCreate列表视图错误:不是一个声明——Android] - 问题-字节技术
onCreate ListView error: not a statement - Android
onCreate列表视图错误:不是一个声明——Android
问题 (Question)
final ListView = (ListView) v.findViewById(R.id.game_list);
According to Android Studio this is not a statement and I am unsure why because it looks fine to me. Perhaps it is in the incorrect placement in the file but I am certain it is not. All it says about it is that It is not a statement which is bugging me. Here is the code it is in with.
CustomizedListView.class:
public class CustomizedListView extends Fragment {
// All static variables
static final String URL = "/music/music.xml";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
final View v = inflater.inflate(R.layout.list_row, container, false);
final ListView = (ListView) v.findViewById(R.id.game_list);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList&HashMap&String, String&& songsList = new ArrayList&HashMap&String, String&&();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes &song&
for (int i = 0; i & nl.getLength(); i++) {
// creating new HashMap
HashMap&String, String& map = new HashMap&String, String&();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key =& value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(getActivity(), songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view,
int position, long id) {
game_list is in main.xml:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#e5e5e5" &
android:id="@+id/game_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#e5e5e5"
android:dividerHeight="6dp"
android:background="#e5e5e5"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"/&
&/LinearLayout&
CustomizedListView is a fragment of MainActivity.class using actionbarsherlock:
public class MainActivity extends SherlockFragmentActivity {
private ViewPager mViewP
private TabSwipe mTabS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabSwipe = new TabSwipe(this, mViewPager);
mTabSwipe.addTab(bar.newTab().setText("Games"), CustomizedListView.class, null);
mTabSwipe.addTab(bar.newTab().setText("Movies"), Purchase_Fragment.class, null);
mTabSwipe.addTab(bar.newTab().setText("Null"), Purchase_Fragment.class, null);
Logcat after fix:
07-20 16:36:41.635
/com.launchpadsw.releasedates E/Trace: error opening trace file: No such file or directory (2)
07-20 16:36:41.899
/com.launchpadsw.releasedates E/AndroidRuntime: FATAL EXCEPTION: main
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.launchpadsw.releasedates.XMLParser.getXmlFromUrl(XMLParser.java:45)
at com.launchpadsw.releasedates.CustomizedListView.onCreate(CustomizedListView.java:49)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1437)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:877)
at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
at android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:801)
at android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1062)
at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
at android.view.View.measure(View.java:15518)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15518)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:15518)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
at android.view.View.measure(View.java:15518)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
最后列表视图=(列表视图)v.findViewById(R.id.game_list);根据Android工作室这不是一个声明,我不确定为什么因为我觉得挺好看的。也许是在文件中的位置不正确,但我肯定它不是。它说,它不是一个声明这事使我心烦。这是代码的。CustomizedListView.class:public class CustomizedListView extends Fragment {
// All static variables
static final String URL = "/music/music.xml";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
final View v = inflater.inflate(R.layout.list_row, container, false);
final ListView = (ListView) v.findViewById(R.id.game_list);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList&HashMap&String, String&& songsList = new ArrayList&HashMap&String, String&&();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes &song&
for (int i = 0; i & nl.getLength(); i++) {
// creating new HashMap
HashMap&String, String& map = new HashMap&String, String&();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key =& value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(getActivity(), songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view,
int position, long id) {
game_list main.xml:&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#e5e5e5" &
android:id="@+id/game_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#e5e5e5"
android:dividerHeight="6dp"
android:background="#e5e5e5"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"/&
&/LinearLayout&
CustomizedListView MainActivity的片段。使用actionbarsherlock类:public class MainActivity extends SherlockFragmentActivity {
private ViewPager mViewP
private TabSwipe mTabS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabSwipe = new TabSwipe(this, mViewPager);
mTabSwipe.addTab(bar.newTab().setText("Games"), CustomizedListView.class, null);
mTabSwipe.addTab(bar.newTab().setText("Movies"), Purchase_Fragment.class, null);
mTabSwipe.addTab(bar.newTab().setText("Null"), Purchase_Fragment.class, null);
Logcat修复后:07-20 16:36:41.635
/com.launchpadsw.releasedates E/Trace: error opening trace file: No such file or directory (2)
07-20 16:36:41.899
/com.launchpadsw.releasedates E/AndroidRuntime: FATAL EXCEPTION: main
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.launchpadsw.releasedates.XMLParser.getXmlFromUrl(XMLParser.java:45)
at com.launchpadsw.releasedates.CustomizedListView.onCreate(CustomizedListView.java:49)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1437)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:877)
at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
at android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:801)
at android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1062)
at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
at android.view.View.measure(View.java:15518)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15518)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:15518)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
at android.view.View.measure(View.java:15518)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
最佳答案 (Best Answer)
You already have this
Replace this
final ListView = (ListView) v.findViewById(R.id.game_list);
list = (ListView) v.findViewById(R.id.game_list);
You can remove the final modifier. Declare ListView list as a class member.
To answer the edited question
You are getting NetworkOnMainThreadException which occurs when you are doing network related operation on the ui thread.
Use AsyncTask or thread.
check this
check this for asynctask
String xml = parser.getXmlFromUrl(URL);
should be done on a background thread.
AsyncTask :
class TheTask extends AsyncTask&Void,Void,Void&
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
xml= parser.getXmlFromUrl(URL);
new TheTask().execute();
Declare S as a class member.
你已经有这个
本文翻译自StackoverFlow,英语好的童鞋可直接参考原文:

我要回帖

更多关于 oncreate方法 的文章

 

随机推荐