2013年11月4日 星期一

Intent 用法 (二)

基本的 Intent 用法
A Activity 開啟 B Activity Intent 用法 (一) 有說明了
這次換作 開啟時 並帶資料給予 B的方法
真接上程式碼



a_layout.xml
<LinearLayout 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:orientation="vertical">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is Activity A"
        />
    
    <Button 
        android:id="@+id/a_layout_bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go"
        />

    <TextView
        android:id="@+id/a_layout_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>

A_Activity.java
package com.example.testintent;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class A_Activity extends Activity {
 
 private Button bt;
 private TextView tv;
 
 private OnClickListener click = new OnClickListener() {
  @Override
  public void onClick(View v) {

   Intent intent = new Intent();
   intent.setClass(A_Activity.this,B_Activity.class);
   intent .putExtra("name","Hello B Activity");
   startActivity(intent);
  }
 };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.a_layout);
  
  bt = (Button)findViewById(R.id.a_layout_bt);
  bt.setOnClickListener(click);
  
  tv = (TextView)findViewById(R.id.a_layout_tv);
  
 }

}

b_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is Activity B"
        />
    
 <TextView
     android:id="@+id/b_layout_et1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    


</LinearLayout>

B_Activity.java
package com.example.testintent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class B_Activity extends Activity {
 
 private TextView tv1;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  setContentView(R.layout.b_layout);
  
  Intent intent = this.getIntent();
  String data = intent.getStringExtra("name");  
  
  tv1 = (TextView)findViewById(R.id.b_layout_et1);
  tv1.setText(name);
  
 }
 
}

此程式功能 是把 A Activity 開啟 B Activity 並帶字串 Hello B Activity B Activity 顯示出收到的字串 重點在於
A_Activity.java 底下的
Intent intent = new Intent();
intent.setClass(A_Activity.this,B_Activity.class);

底下這行與上一篇不一樣的地方
以下就是 key value的作法
"name" 就是 key
"Hello B Activity" 就是 value
intent .putExtra("name","Hello B Activity");

startActivity(intent);

B_Activity.java底下的
Intent intent = getIntent();
//getStringExtra(對應的key);
String data = intent.getStringExtra("name");
這邊作法是 取得Intent 帶過來的東西
附上Source Code

沒有留言:

張貼留言