2011年11月21日 星期一

將資料傳遞至下一個Activity

在Android中頁面間的切換要靠Intent,Intent就像是郵差一樣,將要傳遞的資料儲存在Bundle中,所以會在程式中建立Intent實體和Bundle實體,再透過(intent.putExtras(bundle))敘述,將附在Intent上的bundle物件,隨著Intent送出。

package com.demo.android.RadioA;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class RadioAActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        //RadioGroup event
        RadioGroup radiogroup=(RadioGroup)findViewById(R.id.RadioGroup);
        radiogroup.setOnCheckedChangeListener(rtn);
        //Button event
        Button button=(Button)findViewById(R.id.submit);
        button.setOnClickListener(btn);
         //ToastButton event
        Button toast=(Button)findViewById(R.id.toast);
        toast.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View view) {
// TODO Auto-generated method stub
//Toast message
Toast.makeText(view.getContext(),".....",Toast.LENGTH_SHORT).show();
}
       
        });
        //Button nextActivity
        Button next=(Button)findViewById(R.id.next);
        next.setOnClickListener(next_btn);
       }
  //next_btn
    private OnClickListener next_btn=new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
                        //建立Intent物件實體
Intent intent=new Intent();
//指定要呼叫的Activity class
intent.setClass(RadioAActivity.this,NextA.class);
//建立Bundle物件
Bundle bundle=new Bundle();
// 將資料存放在Bundle物件中
bundle.putString("username",((EditText)findViewById(R.id.username)).getText().toString());
//藉由Intent傳送儲存在Bundle中的資料
intent.putExtras(bundle);
//呼叫新的Activity
startActivity(intent);
}
   
    };
 
    private OnClickListener btn=new OnClickListener(){
     
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
openOptionDialog();
}

private void openOptionDialog(){

AlertDialog.Builder builder=new  AlertDialog.Builder(RadioAActivity.this);
builder.setTitle("RadioActivity");
      builder.setMessage("AlertDialog");
      //setIcon
      builder.setIcon(R.drawable.help_browser);
      //
      builder.create();
      //
      builder.setPositiveButton("OK",new DialogInterface.OnClickListener(){

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
     
      });
         builder.show();
}

   
    };
}
XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="請輸入你的帳號:"
        />
    <EditText android:id="@+id/username"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text=""
          />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="請選擇你的興趣:"
        />
    <RadioGroup android:id="@+id/RadioGroup"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
    <RadioButton android:id="@+id/music"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Music"      
           />
    <RadioButton android:id="@+id/business"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Business"      
           />
     <RadioButton android:id="@+id/sport"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sport"      
           />
    </RadioGroup>
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
         >
    <Button android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="確認"
     
        />
    <Button android:id="@+id/toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toast"
     
        />
   
      <Button android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"
     
        />
 </LinearLayout>
</LinearLayout>
接收的Activity

package com.demo.android.RadioA;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class NextA extends Activity {
private TextView menu;
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nexta);
        //menu
        menu=(TextView)findViewById(R.id.menu);
     
        //建立取得前一個Activity傳過來資料的物件
        Bundle username=this.getIntent().getExtras();
        //將取得Bundle 資料設定
        String result=username.getString("username");
        //顯示結果
        ((TextView)findViewById(R.id.result)).setText("你的帳號是:"+result);
    }

   
}
XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="這是新增的Activity"
        />
   <TextView  android:id="@+id/menu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        />
   <TextView android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        />
   <TextView  android:id="@+id/work"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="單位:"
        />
   <Spinner android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       />
</LinearLayout>










沒有留言:

張貼留言