Android界面切换网络通信.docx
- 文档编号:2257057
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:17
- 大小:1MB
Android界面切换网络通信.docx
《Android界面切换网络通信.docx》由会员分享,可在线阅读,更多相关《Android界面切换网络通信.docx(17页珍藏版)》请在冰豆网上搜索。
Android界面切换网络通信
一、Android的界面切换方法有两个:
方法1、通过setContentView切换layout,这个我比较常用。
有以下步骤:
①新建一个界面的layout的xml文件
②触发某一控件(如Button),该控件已经加载监听器,监听器通过setContentView函数切换layout
这样的实现整个过程都是在一个Activity上面实现,所有变量都在同一状态,因此所有变量都可以在这个Activity状态中获得。
代码如下:
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Buttonbutton=(Button)this.findViewById(R.id.button1);
//给按钮设置监听器
button.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//通过调用setContentView函数切换layout
setContentView(R.layout.login);
}
});
}
方法2、通过转换到另一个Activity,步骤如下
①建一个Activity类
②把该类注册到AndroidManifest.xml,如下
name=".LoginActivity"> ③在原来的Activity上面通过创建Intent类来进行Activity的切换,代码如下 publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Buttonbutton_activity=(Button)this.findViewById(R.id.button2); button_activity.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ Intentintent=newIntent(MainActivity.this,LoginActivity.class); startActivity(intent); } }); } 二、Android与服务器通信的方法有: 方法一: http通信,以xml或者json为载体,相互通信数据。 Android对于http的网络通信,它提供了标准的java接口——httpURLConnection接口,以及apache的接口——httpclient接口。 其中我自己用的比较多的而是httpclient这个接口,因为它的功能更为丰富很有效。 同时http通信也分为post方式和get的方式,两个相比较的话,post传送的数据量比较大,安全性也比较高。 因此在做数据查询时,我会用get方式;而在做数据添加、修改或删除时,我就用Post方式 以下是基于httpclient接口,用get和post的方式通信的代码。 (get方式) protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.login); TextViewtext=(TextView)this.findViewById(R.id.text_http); Stringhttpurl="http: //10.0.2.2: 8080/SIM_SERVER/org/Org-list"; //①httpget连接对象 HttpGethttpRequest=newHttpGet(httpurl); //②取得httpclient的对象 HttpClienthttpclient=newDefaultHttpClient(); try{ //③请求httpclient,取得httpResponse HttpResponsehttpResponse=httpclient.execute(httpRequest); //④判断请求是否成功if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){//⑤取得返回的字符串 StringstrResult=EntityUtils.toString(httpResponse.getEntity()); text.setText(strResult); }else{ text.setText("请求失败"); } }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } (post方式) protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); this.setContentView(R.layout.login); TextViewtext=(TextView)this.findViewById(R.id.text_http); //①http连接地址 Stringurl="http: //10.0.2.2: 8080/SIM_SERVER/and/Android-test"; //②取得httppost连接对象 HttpPosthttpPost=newHttpPost(url); //③使用NameValuePair来保存要传递的Post参数 List //④添加要传递的参数 params.add(newBasicNameValuePair("parentId","0")); HttpEntityhttpentity; try{ //⑤设置字符集 httpentity=newUrlEncodedFormEntity(params,"utf-8"); //⑥把字符集设置在请求request里面 httpPost.setEntity(httpentity); //⑦取得httpclient HttpClienthttpClient=newDefaultHttpClient(); //⑧请求发送,并获得response HttpResponsehttpResponse=httpClient.execute(httpPost); //⑨判断请求是否成功if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){//⑩取得返回字符串 StringstrResult=EntityUtils.toString(httpResponse.getEntity()); text.setText(strResult); }else{ text.setText("请求失败"); } }catch(UnsupportedEncodingExceptione){ e.printStackTrace(); }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } 方法二: socket通信 socket与http不同的是两个的协议不同,socket是面向TCP/UDP协议的,http通信时面向HTTP协议的。 因为我之前做的比较多的都是web方面的项目,相对而言对,对HTTP协议了解比较多。 这里就简单说一下socket的通信。 publicclassClientActivityextendsActivity{ privateTextViewtext=null; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); this.setContentView(R.layout.login); text=(TextView)this.findViewById(R.id.text_http); Buttonbutton=(Button)this.findViewById(R.id.button_direct); button.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ try{ //①新建客户端socket Socketsocket=newSocket("10.0.2.2",54321); //②取得输出流 PrintWriterout=newPrintWriter( newBufferedWriter( newOutputStreamWriter( socket.getOutputStream())),true); //③向服务端输出信息 out.print("我是客户端"); out.flush(); //④取得输入流 BufferedReaderin=newBufferedReader( newInputStreamReader( socket.getInputStream())); //⑤读取信息 Stringmsg=in.readLine(); if(msg==null){ text.setText("请求失败"); }else{ text.setText(msg); } //⑥关闭流 out.close(); in.close(); }catch(UnknownHostExceptione){ e.printStackTrace(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 界面 切换 网络 通信