Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android(13)_解析xml文件1_sax

android(13)_解析xml文件1_sax

編輯:關於Android編程

SAX是一個解析速度快並且占用內存少的xml解析器,非常適合用於Android等移動設備。

SAX解析XML文件采用的是事件驅動,也就是說,它並不需要解析完整個文檔,在按內容順序解析文檔的過程中,SAX會判斷當前讀到的字符是否合法XML語法中的某部分,如果符合就會觸發事件。所謂事件,其實就是一些回調(callback)方法,這些方法(事件)定義在ContentHandler接口。

下面是一些ContentHandler接口常用的方法:

startDocument()
當遇到文檔的開頭的時候,調用這個方法,可以在其中做一些預處理的工作。
endDocument()
和上面的方法相對應,當文檔結束的時候,調用這個方法,可以在其中做一些善後的工作。
startElement(String namespaceURI, String localName, String qName, Attributes atts) 
當讀到一個開始標簽的時候,會觸發這個方法。namespaceURI就是命名空間,localName是不帶命名空間前綴的標簽名,qName是帶命名空間前綴的標簽名。通過atts可以得到所有的屬性名和相應的值。要注意的是SAX中一個重要的特點就是它的流式處理,當遇到一個標簽的時候,它並不會紀錄下以前所碰到的標簽,也就是說,在startElement()方法中,所有你所知道的信息,就是標簽的名字和屬性,至於標簽的嵌套結構,上層標簽的名字,是否有子元屬等等其它與結構相關的信息,都是不得而知的,都需要你的程序來完成。這使得SAX在編程處理上沒有DOM來得那麼方便。
endElement(String uri, String localName, String name)
這個方法和上面的方法相對應,在遇到結束標簽的時候,調用這個方法。
characters(char[] ch, int start, int length) 
這個方法用來處理在XML文件中讀到的內容,第一個參數為文件的字符串內容,後面兩個參數是讀到的字符串在這個數組中的起始位置和長度,使用new String(ch,start,length)就可以獲取內容。只要為SAX提供實現ContentHandler接口的類,那麼該類就可以得到通知事件(實際上就是SAX調用了該類中的回調方法)。因為ContentHandler是一個接口,在使用的時候可能會有些不方便,因此,SAX還為其制定了一個Helper類:DefaultHandler,它實現了ContentHandler接口,但是其所有的方法體都為空,在實現的時候,你只需要繼承這個類,然後重寫相應的方法即可。
使用SAX解析itcast.xml的代碼如下:

SAX 支持已內置到JDK1.5中,你無需添加任何的jar文件。

 

 


Strings.xml
[html] view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
 
    <string name="app_name">lession03_xml</string> 
    <string name="action_settings">Settings</string> 
    <string name="hello_world">Hello world!</string> 
    <string name="btn_sax">采用sax解析xml文件</string> 
    <string name="btn_dom">采用dom解析方式解析</string> 
    <string name="btn_pull">采用pull解析方式解析</string> 
    <string name="btn_cpull">采用pull解析生成xml文件</string> 
 
</resources> 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">lession03_xml</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="btn_sax">采用sax解析xml文件</string>
    <string name="btn_dom">采用dom解析方式解析</string>
    <string name="btn_pull">采用pull解析方式解析</string>
    <string name="btn_cpull">采用pull解析生成xml文件</string>

</resources>

 

activity_xml.xml
[html] view plaincopyprint?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".XmlActivity" > 
 
    <Button 
        android:id="@+id/button_cpull" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignLeft="@+id/btn_pull" 
        android:layout_alignRight="@+id/btn_pull" 
        android:layout_below="@+id/btn_pull" 
        android:layout_marginTop="20dp" 
        android:text="@string/btn_cpull" /> 
 
    <Button 
        android:id="@+id/btn_sax" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:text="@string/btn_sax" /> 
 
    <Button 
        android:id="@+id/btn_pull" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignLeft="@+id/btn_dom" 
        android:layout_alignRight="@+id/btn_dom" 
        android:layout_below="@+id/btn_dom" 
        android:layout_marginTop="68dp" 
        android:text="@string/btn_pull" /> 
 
    <Button 
        android:id="@+id/btn_dom" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignLeft="@+id/btn_sax" 
        android:layout_alignRight="@+id/btn_sax" 
        android:layout_below="@+id/btn_sax" 
        android:layout_marginTop="60dp" 
        android:text="@string/btn_dom" /> 
 
</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".XmlActivity" >

    <Button
        android:id="@+id/button_cpull"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_pull"
        android:layout_alignRight="@+id/btn_pull"
        android:layout_below="@+id/btn_pull"
        android:layout_marginTop="20dp"
        android:text="@string/btn_cpull" />

    <Button
        android:id="@+id/btn_sax"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:text="@string/btn_sax" />

    <Button
        android:id="@+id/btn_pull"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_dom"
        android:layout_alignRight="@+id/btn_dom"
        android:layout_below="@+id/btn_dom"
        android:layout_marginTop="68dp"
        android:text="@string/btn_pull" />

    <Button
        android:id="@+id/btn_dom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_sax"
        android:layout_alignRight="@+id/btn_sax"
        android:layout_below="@+id/btn_sax"
        android:layout_marginTop="60dp"
        android:text="@string/btn_dom" />

</RelativeLayout>


Person.java
[java] view plaincopyprint?
package com.example.lession03_xml.domain; 
 
import java.io.Serializable; 
 
/**
 * 創建一個javabean存儲xml解析的數據
 * 
 * @author chenhj
 * 
 */ 
public class Person implements Serializable { 
 
    /**
         * 
         */ 
    private static final long serialVersionUID = 1L; 
    private int id; 
    private String name; 
    private short age; 
 
    public Person() { 
        super(); 
        // TODO Auto-generated constructor stub  
    } 
 
    public Person(int id, String name, short age) { 
        super(); 
        this.id = id; 
        this.name = name; 
        this.age = age; 
    } 
 
    public int getId() { 
        return id; 
    } 
 
    public void setId(int id) { 
        this.id = id; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public short getAge() { 
        return age; 
    } 
 
    public void setAge(short age) { 
        this.age = age; 
    } 
 

package com.example.lession03_xml.domain;

import java.io.Serializable;

/**
 * 創建一個javabean存儲xml解析的數據
 *
 * @author chenhj
 *
 */
public class Person implements Serializable {

 /**
   *
   */
 private static final long serialVersionUID = 1L;
 private int id;
 private String name;
 private short age;

 public Person() {
  super();
  // TODO Auto-generated constructor stub
 }

 public Person(int id, String name, short age) {
  super();
  this.id = id;
  this.name = name;
  this.age = age;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public short getAge() {
  return age;
 }

 public void setAge(short age) {
  this.age = age;
 }

}

XMLContentHandlerService.java
[java] view plaincopyprint?
 

[java] view plaincopyprint?
package com.example.lession03_xml.service; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 
 
import com.example.lession03_xml.domain.Person; 
 
public class XMLContentHandlerService extends DefaultHandler { 
 
    // 解析的person對象存儲到list集合中  
    private List<Person> persons;// = new ArrayList<Person>();  
 
    public Person currentPerson;// 解析的當前person對象  
 
    public String tagName;// 聲明標簽的名稱  
     
     
 
    //獲取解析的所有的person對象  
    public List<Person> getPersons() { 
        return persons; 
    } 
 
    public void setPersons(List<Person> persons) { 
        this.persons = persons; 
    } 
 
    /**
     * 文檔開始觸發的事件
     */ 
    @Override 
    public void startDocument() throws SAXException { 
        super.startDocument(); 
        persons = new ArrayList<Person>(); 
    } 
 
    /**
     * 當接受到元素開始標簽的時候觸發該事件 <person>
     *  uri:元素的命名空間 
     *  localName:元素的本地名稱(不帶前綴)
     * qName:元素的限定名(帶前綴)
     *  attributes:屬性集合
     */ 
    @Override 
    public void startElement(String uri, String localName, String qName, 
            Attributes attributes) throws SAXException { 
        super.startElement(uri, localName, qName, attributes); 
 
        // 判斷解析的標簽是否是person  
        if (localName.equals("person")) { 
            // 創建person對象  
            currentPerson = new Person(); 
            // 把id屬性的值解析出來 並且把id賦值給currentPerson對象  
            currentPerson.setId(Integer.parseInt(attributes.getValue(0))); 
        } 
        // person name age  
        this.tagName = localName; 
 
    } 
 
     
    @Override 
    public void characters(char[] ch, int start, int length) 
            throws SAXException { 
        super.characters(ch, start, length); 
 
        // 首先判斷tagName是否為空  
        if (tagName != null) { 
            // 獲取標簽中的內容  
            String data = new String(ch, start, length); 
            // 判斷標簽是否是name  
            if (tagName.equals("name")) { 
                currentPerson.setName(data); 
            } else if (tagName.equals("age")) {// 判斷標簽是否是age  
                currentPerson.setAge((short) Integer.parseInt(data)); 
            } 
 
        } 
    } 
 
    @Override 
    public void endElement(String uri, String localName, String qName) 
            throws SAXException { 
        super.endElement(uri, localName, qName); 
 
        // 當person標簽結束的時候 把person對象存儲到集中  
        if (localName.equals("person")) { 
            persons.add(currentPerson); 
            // 當對象=null  
            currentPerson = null; 
        } 
 
        // person age  
        // name  
        this.tagName = null; 
    } 
 
 
 
    @Override 
    public void endDocument() throws SAXException { 
        // TODO Auto-generated method stub  
        super.endDocument(); 
    } 
 

package com.example.lession03_xml.service;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.example.lession03_xml.domain.Person;

public class XMLContentHandlerService extends DefaultHandler {

 // 解析的person對象存儲到list集合中
 private List<Person> persons;// = new ArrayList<Person>();

 public Person currentPerson;// 解析的當前person對象

 public String tagName;// 聲明標簽的名稱
 
 

 //獲取解析的所有的person對象
 public List<Person> getPersons() {
  return persons;
 }

 public void setPersons(List<Person> persons) {
  this.persons = persons;
 }

 /**
  * 文檔開始觸發的事件
  */
 @Override
 public void startDocument() throws SAXException {
  super.startDocument();
  persons = new ArrayList<Person>();
 }

 /**
  * 當接受到元素開始標簽的時候觸發該事件 <person>
  *  uri:元素的命名空間
  *  localName:元素的本地名稱(不帶前綴)
  * qName:元素的限定名(帶前綴)
  *  attributes:屬性集合
  */
 @Override
 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {
  super.startElement(uri, localName, qName, attributes);

  // 判斷解析的標簽是否是person
  if (localName.equals("person")) {
   // 創建person對象
   currentPerson = new Person();
   // 把id屬性的值解析出來 並且把id賦值給currentPerson對象
   currentPerson.setId(Integer.parseInt(attributes.getValue(0)));
  }
  // person name age
  this.tagName = localName;

 }

 
 @Override
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  super.characters(ch, start, length);

  // 首先判斷tagName是否為空
  if (tagName != null) {
   // 獲取標簽中的內容
   String data = new String(ch, start, length);
   // 判斷標簽是否是name
   if (tagName.equals("name")) {
    currentPerson.setName(data);
   } else if (tagName.equals("age")) {// 判斷標簽是否是age
    currentPerson.setAge((short) Integer.parseInt(data));
   }

  }
 }

 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  super.endElement(uri, localName, qName);

  // 當person標簽結束的時候 把person對象存儲到集中
  if (localName.equals("person")) {
   persons.add(currentPerson);
   // 當對象=null
   currentPerson = null;
  }

  // person age
  // name
  this.tagName = null;
 }

 

 @Override
 public void endDocument() throws SAXException {
  // TODO Auto-generated method stub
  super.endDocument();
 }

}

 

 

XmlActivity.java
[java] view plaincopyprint?
package com.example.lession03_xml; 
 
 
import java.io.InputStream; 
import java.util.List; 
 
 
import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 
 
 
import com.example.lession03_xml.domain.Person; 
import com.example.lession03_xml.service.XMLContentHandlerService; 
import com.example.lession03_xml.service.XMLDomService; 
import com.example.lession03_xml.service.XMLPullService; 
 
 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
 
 
public class XmlActivity extends Activity { 
<SPAN>  </SPAN>// 聲明控件  
<SPAN>  </SPAN>public Button btn_sax, btn_dom, btn_pull, btn_cpull; 
<SPAN>  </SPAN>public XMLDomService xmlDomService; 
<SPAN>  </SPAN>public XMLPullService xmlPullService; 
 
 
<SPAN>  </SPAN>@Override 
<SPAN>  </SPAN>protected void onCreate(Bundle savedInstanceState) { 
<SPAN>      </SPAN>super.onCreate(savedInstanceState); 
<SPAN>      </SPAN>// 設置顯示的視圖  
<SPAN>      </SPAN>setContentView(R.layout.activity_xml); 
 
 
<SPAN>      </SPAN>// 實例化  
<SPAN>      </SPAN>xmlDomService = new XMLDomService(); 
<SPAN>      </SPAN>xmlPullService = new XMLPullService(); 
 
 
<SPAN>      </SPAN>// 通過findViewById方法獲取控件對象  
<SPAN>      </SPAN>btn_sax = (Button) findViewById(R.id.btn_sax); 
<SPAN>      </SPAN>btn_dom = (Button) findViewById(R.id.btn_dom); 
<SPAN>      </SPAN>btn_pull = (Button) findViewById(R.id.btn_pull); 
<SPAN>      </SPAN>btn_cpull = (Button) findViewById(R.id.button_cpull); 
 
 
<SPAN>      </SPAN>// 給按鈕注冊事件  
<SPAN>      </SPAN>btn_sax.setOnClickListener(new MyClickListener()); 
<SPAN>      </SPAN>btn_dom.setOnClickListener(new MyClickListener()); 
<SPAN>      </SPAN>btn_pull.setOnClickListener(new MyClickListener()); 
<SPAN>      </SPAN>btn_cpull.setOnClickListener(new MyClickListener()); 
<SPAN>  </SPAN>} 
 
 
<SPAN>  </SPAN>@Override 
<SPAN>  </SPAN>public boolean onCreateOptionsMenu(Menu menu) { 
<SPAN>      </SPAN>// Inflate the menu; this adds items to the action bar if it is present.  
<SPAN>      </SPAN>getMenuInflater().inflate(R.menu.xml, menu); 
<SPAN>      </SPAN>return true; 
<SPAN>  </SPAN>} 
 
 
<SPAN>  </SPAN>class MyClickListener implements View.OnClickListener { 
 
 
<SPAN>      </SPAN>@Override 
<SPAN>      </SPAN>public void onClick(View v) { 
 
 
<SPAN>          </SPAN>// 獲取組件的id  
<SPAN>          </SPAN>int id = v.getId(); 
 
 
<SPAN>          </SPAN>switch (id) { 
<SPAN>          </SPAN>case R.id.btn_sax: 
<SPAN>              </SPAN>Toast.makeText(XmlActivity.this, "采用sax解析xml文件案例", 
<SPAN>                      </SPAN>Toast.LENGTH_LONG).show(); 
 
 
<SPAN>              </SPAN>// sax解析的工廠對象  
<SPAN>              </SPAN>SAXParserFactory factory = SAXParserFactory.newInstance(); 
<SPAN>              </SPAN>try { 
<SPAN>                  </SPAN>// 得到sax的解析器  
<SPAN>                  </SPAN>SAXParser saxParser = factory.newSAXParser(); 
<SPAN>                  </SPAN>// 創建handler對象  
<SPAN>                  </SPAN>XMLContentHandlerService handlerService = new XMLContentHandlerService(); 
<SPAN>                  </SPAN>// 獲取到了 asserts目錄中 csdn.xml文件  
<SPAN>                  </SPAN>InputStream is = getAssets().open("csdn.xml"); 
<SPAN>                  </SPAN>// 直接解析 InputStream的流對象  
<SPAN>                  </SPAN>saxParser.parse(is, handlerService); 
<SPAN>                  </SPAN>// 通過 handlerService對象  
<SPAN>                  </SPAN>Toast.makeText(XmlActivity.this, 
<SPAN>                          </SPAN>"---" + handlerService.getPersons().size(), 
<SPAN>                          </SPAN>Toast.LENGTH_LONG).show(); 
<SPAN>              </SPAN>} catch (Exception e) { 
<SPAN>                  </SPAN>// TODO Auto-generated catch block  
<SPAN>                  </SPAN>e.printStackTrace(); 
<SPAN>              </SPAN>} 
<SPAN>              </SPAN>break; 
<SPAN>          </SPAN>case R.id.btn_dom: 
<SPAN>              </SPAN>InputStream is = null; 
<SPAN>              </SPAN>try { 
<SPAN>                  </SPAN>// 獲取讀取文件的輸入流對象  
<SPAN>                  </SPAN>is = getAssets().open("csdn.xml"); 
<SPAN>                  </SPAN>// 采用  
<SPAN>                  </SPAN>List<Person> persons = xmlDomService.parseXML(is); 
<SPAN>                  </SPAN>//  
<SPAN>                  </SPAN>Toast.makeText(XmlActivity.this, 
<SPAN>                          </SPAN>"" + persons.get(0).getName(), Toast.LENGTH_LONG) 
<SPAN>                          </SPAN>.show(); 
 
 
<SPAN>              </SPAN>} catch (Exception e) { 
<SPAN>                  </SPAN>e.printStackTrace(); 
<SPAN>              </SPAN>} 
 
 
<SPAN>              </SPAN>break; 
 
 
<SPAN>          </SPAN>case R.id.btn_pull: 
<SPAN>              </SPAN>  
 
<SPAN>              </SPAN>break; 
 
 
<SPAN>          </SPAN>case R.id.button_cpull: 
<SPAN>              </SPAN>  
<SPAN>              </SPAN>break; 
 
 
<SPAN>          </SPAN>default: 
<SPAN>              </SPAN>break; 
 
 
<SPAN>          </SPAN>} 
 
 
<SPAN>      </SPAN>} 
<SPAN>  </SPAN>} 

package com.example.lession03_xml;


import java.io.InputStream;
import java.util.List;


import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;


import com.example.lession03_xml.domain.Person;
import com.example.lession03_xml.service.XMLContentHandlerService;
import com.example.lession03_xml.service.XMLDomService;
import com.example.lession03_xml.service.XMLPullService;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class XmlActivity extends Activity {
 // 聲明控件
 public Button btn_sax, btn_dom, btn_pull, btn_cpull;
 public XMLDomService xmlDomService;
 public XMLPullService xmlPullService;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 設置顯示的視圖
  setContentView(R.layout.activity_xml);


  // 實例化
  xmlDomService = new XMLDomService();
  xmlPullService = new XMLPullService();


  // 通過findViewById方法獲取控件對象
  btn_sax = (Button) findViewById(R.id.btn_sax);
  btn_dom = (Button) findViewById(R.id.btn_dom);
  btn_pull = (Button) findViewById(R.id.btn_pull);
  btn_cpull = (Button) findViewById(R.id.button_cpull);


  // 給按鈕注冊事件
  btn_sax.setOnClickListener(new MyClickListener());
  btn_dom.setOnClickListener(new MyClickListener());
  btn_pull.setOnClickListener(new MyClickListener());
  btn_cpull.setOnClickListener(new MyClickListener());
 }


 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.xml, menu);
  return true;
 }


 class MyClickListener implements View.OnClickListener {


  @Override
  public void onClick(View v) {


   // 獲取組件的id
   int id = v.getId();


   switch (id) {
   case R.id.btn_sax:
    Toast.makeText(XmlActivity.this, "采用sax解析xml文件案例",
      Toast.LENGTH_LONG).show();


    // sax解析的工廠對象
    SAXParserFactory factory = SAXParserFactory.newInstance();
    try {
     // 得到sax的解析器
     SAXParser saxParser = factory.newSAXParser();
     // 創建handler對象
     XMLContentHandlerService handlerService = new XMLContentHandlerService();
     // 獲取到了 asserts目錄中 csdn.xml文件
     InputStream is = getAssets().open("csdn.xml");
     // 直接解析 InputStream的流對象
     saxParser.parse(is, handlerService);
     // 通過 handlerService對象
     Toast.makeText(XmlActivity.this,
       "---" + handlerService.getPersons().size(),
       Toast.LENGTH_LONG).show();
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    break;
   case R.id.btn_dom:
    InputStream is = null;
    try {
     // 獲取讀取文件的輸入流對象
     is = getAssets().open("csdn.xml");
     // 采用
     List<Person> persons = xmlDomService.parseXML(is);
     //
     Toast.makeText(XmlActivity.this,
       "" + persons.get(0).getName(), Toast.LENGTH_LONG)
       .show();


    } catch (Exception e) {
     e.printStackTrace();
    }


    break;


   case R.id.btn_pull:
    

    break;


   case R.id.button_cpull:
    
    break;


   default:
    break;


   }


  }
 }
}

 

\


 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved