2010年2月7日 星期日

Android學習筆記 - 傳遞參數到下一個Activity

1. 透過Bundle物件傳遞參數到下一個Activity

2. 第一個Activity(MainActivity.java)
package org.me.android_transferparam;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    private Button nextButton;
    private EditText nameEdit;
    private EditText phoneEdit;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        //載入所有的Widget
        loadWidget();
        
        nextButton.setOnClickListener(new Button.OnClickListener(){
           @Override
           public void onClick(View view){
               //傳送參數到下一個Actitity
               deliverToNextActitity();
           }
        });
    }

    public void deliverToNextActitity(){
        //建立一個bundle物件,並將要傳遞的參數放到bundle裡
        Bundle bundle = new Bundle();
        bundle.putString("name", nameEdit.getText().toString());
        bundle.putString("phone", phoneEdit.getText().toString());
        Intent intent = new Intent();
        //設定下一個Actitity
        intent.setClass(this, SecondActivity.class);
        intent.putExtras(bundle);
        //開啟Activity
        startActivity(intent);
    }

    private void loadWidget(){
        nextButton = (Button) findViewById(R.id.nextButton);
        nameEdit = (EditText) findViewById(R.id.nameEdit);
        phoneEdit = (EditText) findViewById(R.id.phoneEdit);
    }
}

3. 第二個Activity(SecondActivity.java)
package org.me.android_transferparam;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class SecondActivity extends Activity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.second);
        TextView content = (TextView) findViewById(R.id.content);
        Button backButton = (Button) findViewById(R.id.backButton);
        //取得前一個Activity傳過來的Bundle物件
        Bundle bundle = getIntent().getExtras();
        content.setText("姓名:"+bundle.getString("name")+"   電話:"+bundle.getString("phone"));

        backButton.setOnClickListener(new Button.OnClickListener(){
           @Override
           public void onClick(View view){
               //結束此Activity
               finish();
           }
        });
    }
}

4. main.xml(Layout)
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/widget149"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <EditText
        android:id="@+id/nameEdit"
        android:layout_width="100px"
        android:layout_height="36px"
        android:layout_x="58px"
        android:layout_y="12px"
        >
    </EditText>
    <TextView
        android:id="@+id/nameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"
        android:layout_x="0px"
        android:layout_y="18px"
        >
    </TextView>
    <TextView
        android:id="@+id/phoneText"
        android:layout_width="wrap_content"
        android:layout_height="-12px"
        android:text="電話:"
        android:layout_x="-1px"
        android:layout_y="62px"
        >
    </TextView>
    <EditText
        android:id="@+id/phoneEdit"
        android:layout_width="100px"
        android:layout_height="36px"
        android:layout_x="58px"
        android:layout_y="57px"
        >
    </EditText>
    <Button
        android:id="@+id/nextButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="傳送到下一個Activity"
        android:layout_x="4px"
        android:layout_y="103px"
        >
    </Button>
</AbsoluteLayout>

5. second.xml(Layout)
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">"
    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </TextView>
    <Button
        android:id="@+id/backButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="回前一個Activity">
    </Button>
</LinearLayout>

6. 程式啟動及輸入參數之後的畫面

1 則留言:

  1. Hi

    問個蠢問題

    為何不用一個Activity當父類別 然後內建一個static物件 (可能是List類別繼承)

    然後再設計兩個子類別 然後用這個static物件來傳遞??

    (實務上當然不可能直接把我的字面意義拿去採用

    至少 List的內容物E要經過設計

    但假設經過設計呢??)

    回覆刪除