您的位置:首页 > 产品设计 > UI/UE

7.2 Android Basic UI的布局 Intent和Activity

2011-03-25 17:02 435 查看
Download Source Code <<ActivityIntentDemo.zip>>

Activity 和 Intent 演示

使用startActivity()方法在Activity之间切换

使用Intent.putExtra()、Intent.putExtras()方法保存需要传递的数据

使用startActivityForResult()方法在Activity之间传递参数

重载onActivityResult()方法处理回传数据

使用Intent.getExtra()、Intent.getExtras()方法获取传递的数据

新建项目ActivityIntentDemo,编辑res/layout/main.xml布局文件
<?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:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<Button android:text="显示Activity1" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

<Button android:text="显示Activity2" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

</LinearLayout>

添加了两个按钮,当单击按钮的时候切换Activity。

2. 在res/layout添加activity1.xml 和 activity2.xml 布局文件

activity1.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content" android:layout_height="wrap_content">

<TextView android:text="Activity1" android:id="@+id/TextView01"

android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

<Button android:text="Activity1按钮" android:id="@+id/activity1_btn"

android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

</LinearLayout>

activity2.xml

<?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">

<Button android:id="@+id/button4"

android:layout_width="wrap_content"

android:layout_height="wrap_content" android:text="这是button4" />

</LinearLayout>

3. 添加两个类Activity1 和Activity2继承自Activity类,并在onCreate()方法中关联xml布局文件

import android.app.Activity;

import android.os.Bundle;

public class Activity1 extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity1);

}

}

import android.app.Activity;

import android.os.Bundle;

public class Activity2 extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity2);

}

}

4. 编辑ActivityIntentDemo类,如下代码:

public class ActivityIntentDemo extends Activity {

Button button1;

Button button2;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

button1 = (Button)findViewById(R.id.Button01);

button2 = (Button)findViewById(R.id.Button02);

button1.setOnClickListener(button1_click_listener);

button2.setOnClickListener(button2_click_listener);

}

private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent();

intent.setClass(ActivityIntentDemo.this, Activity1.class);

startActivity(intent);

}

};

private Button.OnClickListener button2_click_listener = new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent();

intent.setClass(ActivityIntentDemo.this, Activity2.class);

startActivity(intent);

}

};

}

为连个按钮添加单击事件,在单击事件中使用Intent.setClass配置Activity,使用startActivity()方法启动Activity。

5. 在AndroidManifest.xml中配置新的Activity

<activity android:name="Activity1"></activity>

<activity android:name="Activity2"></activity>

6. 运行程序



在Activity之间传递数据

在ActivityIntentDemo类中修改button1的click 事件

private Button.OnClickListener button1_click_listener = new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent();

intent.setClass(ActivityIntentDemo.this, Activity1.class);

//startActivity(intent);

//数据传递

intent.putExtra("Main", "来自ActivityIntentDemo的数据");

startActivityForResult(intent,REQUEST_CODE);

}

};

使用putExtra()方法放置要传递的数据,使用startActivityForResult()方法来启动新的Activity。并且当新的Activity运行结束的时候,还必须执行原Activity里的回凋函数onActivityResult()。

2. 编辑Activity1类在onCreate()方法中修改如下代码:

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity1);

//接收数据

String data=null;

Bundle bundle = getIntent().getExtras();

if(bundle!=null){

data = bundle.getString("Main");

setTitle("接受到的数据:"+data);

}

//button click listener

Button btn = (Button)findViewById(R.id.activity1_btn);

btn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

//单击按钮返回的数据

Bundle bundle = new Bundle();

bundle.putString("store", "数据来自Activity1");

Intent mIntent = new Intent();

mIntent.putExtras(bundle);

setResult(RESULT_OK, mIntent);

finish();

}

});

}

使用getIntent().getExtras()方法返回接收到的数据。最后是单击按钮调用finish()方法返回到主界面。

3. 在ActivityIntnetDemo类中重载onActivityResult()方法,处理返回的结果数据

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == REQUEST_CODE) {

if (resultCode == RESULT_CANCELED)

setTitle("取消");

else if (resultCode == RESULT_OK) {

String temp=null;

Bundle extras = data.getExtras();

if (extras != null) {

temp = extras.getString("store");

}

setTitle(temp);

}

}

}

4. Activity2只是简单的返回

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity2);

//button click listener

Button btn = (Button)findViewById(R.id.activity2_btn);

btn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

finish();

}

});

}

Activity1接收到的数据:



当单击按钮后,从Activity1返回的数据。



如果是单击的返回键:



http://www.cnblogs.com/xingquan
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: