顯示具有 起手式 標籤的文章。 顯示所有文章
顯示具有 起手式 標籤的文章。 顯示所有文章

Fragment切換起手式

在Android版本3.0之後發行了Fragment這個新功能
從此之後就不用每次要開新的畫面就得launch新的Activity啦!
這個新功能可以做到同一個Activity內多個畫面的切換
同時又不影響整個Activity的生命週期(同場加映Fragment與Activity互相對應的生命週期)
以下將展示Fragment切換起手式

首先你會準備幾個檔案:
  1. 執行以下代碼的Activity(這邊以MainActivity.class為例) 
  2. 欲更換的Fragment(這邊以FragmentNearby.class為例) 
  3. 整個畫面的layout(這邊以main.xml為例,在欲更換Fragment的地方放置Framelayout元件,且在本例中該元件id為content)
Fragment切換起手式
// new一個新的Fragment類別物件
FragmentNearby fragmentNearby = new FragmentNearby();

// getFragmentManager, 這邊getSupportFragmentManager是為了向較舊的版本相容
FragmentManager fragmentManager = getSupportFragmentManager();

// 進行transaction
FragmentTransaction transaction = fragmentManager.beginTransaction();

// 對Fragment動手動腳,指令額外包括add, remove, hide, show...etc
transaction.replace(R.id.content, fragmentNearby);

// 確認並執行transaction!
transaction.commit();



References


Fragments | Android Developers

HttpClient起手式

當我們用瀏覽器(像是IE、Chrome、Firefox)在逛網站時
可以想像我們的電腦(客戶端,Client)要和網站的電腦(伺服端,Server)一直都在進行溝通
進行溝通的方式大概就是client對server發出要求(request),然後server送回應(response)給client
接著client再想辦法去解析response中所夾帶的資料~

那通常送出request有兩種方法,分別為POST和GET
兩者之間有一點點不同,但這不是這次要講的內容......
這次要說的是Android和網頁或網站傳遞資料的過程當中
所會用到的HttpClient與相關的常用程式碼寫法:

HttpClient起手式

//new一個新的HttpClient物件
DefaultHttpClient httpClient = new DefaultHttpClient();

//看是要用POST或GET方法,new一個出來,並且指定網址(url)
HttpPost httpPost = new HttpPost(url);

//將要傳遞的參數放到params裡面並設定HttpPost的Entity
httpPost.setEntity(new UrlEncodedFormEntity(params));

//new一個HttpResponse來裝httpClient執行之後的結果
HttpResponse httpResponse = httpClient.execute(httpPost);

//使用HttpEntity把內容拿出來
HttpEntity httpEntity = httpResponse.getEntity();

//(範例)內容可以應用在InputStream中
is = httpEntity.getContent();

關於params(傳遞參數,parameters)的設定,它必須使用NameValuePair格式儲存
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));

延伸問題一、HttpClient好像也很常見,和DefaultHttpClient的差別?

DefaultHttpClient是一個類別(Class),HttpClient是一個介面(Interface)
基本上藉由對HttpClient的實作已經可以應付大部分的狀況 (Default implementation of HttpClient pre-configured for most common use scenarios)
DefaultHttpClient之後也不建議使用了(Deprecated),可以使用HttpClientBuilder、CloseableHttpClient等其他方法

延伸問題二、和透過PHP表單輸入的差別?


在PHP中得透過$_POST["name"]的方式來取得表單中的數值,這邊則得要設定params

References


DefaultHttpClient (Apache HttpClient 4.3.6 API)
DefaultHttpClient is deprecated
【Android进阶学习】Http编程之HttpClient