`
iaiai
  • 浏览: 2149106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Activity之间跳转相互传值

阅读更多
Intent用法实例:

1.无参数Activity跳转
Intent it = new Intent(Activity.Main.this, Activity2.class);
startActivity(it);


2.向下一个Activity传递数据(使用Bundle和Intent.putExtras)
Intent it = new Intent(Activity.Main.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("name", "This is from MainActivity!");
it.putExtras(bundle); // it.putExtra(“test”, "shuju”);
startActivityForResult(intent, 0);

对于数据的获取可以采用:
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");



AndroidManifest.xml配置文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="iaiai.test" android:versionCode="1" android:versionName="1.0">
	<uses-sdk android:minSdkVersion="8" />

	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".MyList" android:label="@string/contact_title">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		<activity android:name=".TestWidget" android:label="@string/contact_title"></activity>
	</application>
	<uses-permission android:name="android.permission.READ_CONTACTS" />
	<!-- 在SD卡中创建文件与删除文件权限 -->
	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
	<!-- 往SD卡中写入数据权限 -->
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

*此文件要注意一个地方就是写的所有Activity类必须要在此配置文件中配置activity,如果不配置则跳转会报错。

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">
	<EditText android:id="@+id/et" android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<Button android:id="@+id/bt" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/btn_next"></Button>
</LinearLayout>

list_items.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="wrap_content" android:id="@+id/myListItem">
	<EditText android:id="@+id/et1" android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<Button android:id="@+id/bt1" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/btn_return"></Button>
</LinearLayout>

values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, TestListView!</string>
    <string name="app_name">TestListView</string>
    
    <string name="contact_title">Contact</string>
    
    <string name="btn_next">Next</string>
    <string name="btn_return">Prev</string>
</resources>

values-zh-rCN/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, TestListView!</string>
    <string name="app_name">TestListView</string>
    
    <string name="contact_title">联系人</string>
    
    <string name="btn_next">下一步</string>
     <string name="btn_return">返回</string>
</resources>

MyList.java类:
package iaiai.test;

import android.app.Activity;
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;

public class MyList extends Activity {

	private EditText editView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		editView = (EditText) findViewById(R.id.et);

		Button bt = (Button) findViewById(R.id.bt);
		bt.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MyList.this, TestWidget.class);

				Bundle bundle = new Bundle();
				bundle.putString("text", editView.getText().toString());
				intent.putExtras(bundle);

				startActivityForResult(intent, 0);
				// finish(); //这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
			}
		});
	}

	/**
	 * 取到回传的值
	 */
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		switch (resultCode) { // resultCode为回传的标记,我在B中回传的是RESULT_OK
		case RESULT_OK:
			Bundle b = data.getExtras(); // data为B中回传的Intent
			editView.setText(b.getString("text"));// 回传的值
			break;
		default:
			break;
		}
	}

}

TestWidget.java类:
package iaiai.test;

import android.app.Activity;
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;

public class TestWidget extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.list_items);

		Bundle bundle = getIntent().getExtras();

		final EditText editView = (EditText) findViewById(R.id.et1);
		editView.setText(bundle.getString("text"));

		Button bt = (Button) findViewById(R.id.bt1);
		bt.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(TestWidget.this, MyList.class);
				
				Bundle bundle = new Bundle();
				bundle.putString("text", editView.getText().toString());
				intent.putExtras(bundle);
				
				setResult(RESULT_OK, intent);
				finish(); // 这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
			}
		});
	}

}

以下是运行结果:


  • 大小: 17.1 KB
  • 大小: 16 KB
  • 大小: 18.1 KB
分享到:
评论
1 楼 Iam42 2013-09-05  
赞一个~~~

相关推荐

Global site tag (gtag.js) - Google Analytics