顯示具有 Activity 標籤的文章。 顯示所有文章
顯示具有 Activity 標籤的文章。 顯示所有文章

[Android] 新增Activity

一個Activity代表一個頁面。要新增一個頁面就要新增一個Activity。我們可以透過Intent和startActivity來啟動另一個Activity。

要新增一個Activity需要以下的動作
1. 新增一個class file
2. 在manifest.xml新增<Activity>
3. 在原本的Activity加入startActivity啟用另一個Activity

新增一個class file

在Eclipse Package Explorer畫面按右鍵 > New > Class
Name填入class名稱
Superclass選擇android.app.Activity
完成後點選Finish
產生了Report.java


因為要顯示介面,所以要在res/layout目錄下新增一個xml來描述Report這個Activity。
然後要在AndroidManifest.xml新增<activity>
如何新增?在Application頁籤>Application Note點選Add,選Activity完成新增。


Application Note右側出現Attribute for Activity,在Name點選Browser會出現目前專案中的Activity,選擇要的Activity,OK完成新增。

 



比較AndroidManifest前後發現新增了   <activity android:name="Report"></activity>
當然也可以透過手動修改AndroidManifest.xml進行Activity新增。






最後一個步驟,在原本的Activity中使用startActivity啟動另一個Activity,寫法如下。
先import android.content.Intent;
然後在OnClickListener的onClick,加入以下程式碼,即可啟動Report.class。
Intent intent = new Intent();
intent.setClass(MainActivity.this, Report.class);  //setClass(來源, 目的地)
startActivity(intent);

[Android] 使用Intent 在不同的Activity傳遞資料

要將在Activity A輸入的資料送到Activity B進行運算,我們可以透過Intent來實現。
資料的傳送分為傳送端與接收端

傳送端程式碼
說明: new一個intent實體,setClass(A,B)由A傳到B,new一個Bundle把要傳的資料透過putString存放在KEY中,intent.putExtras(bundle)把bundle放在intent準備一起傳送,startActivity傳送。

     public void onClick(View v){

     Intent intent = new Intent();
intent.setClass(MainActivity.this, Report.class);
Bundle bundle = new Bundle();
bundle.putString("KEY_HEIGHT", edit_text_height.getText().toString());
bundle.putString("KEY_WEIGHT", edit_text_weight.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
     }

接收端程式碼
說明:getIntent().getExtras()取得bundle內容,budle.getString(KEY)取得KEY存放的內容。

Bundle bundle = this.getIntent().getExtras();
double height = Double.parseDouble(bundle.getString("KEY_HEIGHT"))/100;


double weight = Double.parseDouble(bundle.getString("KEY_WEIGHT"));