Android 四大组件学习之Activity之四

上一节学习了利用Intent传值。本节学习利用激活新的Activity获得其返回值。

MainActivity的布局文件如下:

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="53dp"
        android:text="MainActivity" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="188dp"
        android:text="Button" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="87dp"
        android:ems="10" />

SecondActivity的布局文件如下:注意: 布局文件是我随便拖拽上去的。

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="返回" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="83dp"
        android:text="SecondActivity" />

MainActivity的逻辑部分:

public class MainActivity extends Activity {

	private EditText editText;
	private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获得Button控件
        Button button = (Button)findViewById(R.id.button1);
        //获得EditText控件
        editText = (EditText)findViewById(R.id.editText1);
        textView = (TextView)findViewById(R.id.textView1);
        //给Button控件设置监听器
        button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 当按下时,通过Intent跳转到SecondActivity
				Log.i("Activity_Log", "Button按下");
				//new一个Intent
				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
				//获得Edittext中输入的字符
				String string = editText.getText().toString();
				//将获得字符放入Intent
				intent.putExtra("12345", string);
				//启动Activity,带返回
				startActivityForResult(intent, 5678);
			}
		});
    }

    //当SecondActivity返回时,就会调用onActivityResult
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		if(requestCode == 5678)//判断请求码
		{
			if(resultCode == 8890)//判断返回码
			{
				//取出返回的数据显示在textview上
				Bundle b= data.getExtras();
				String string = b.getString("12345");
				textView.setText(string);
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}
}

SecondActivity的逻辑代码:

public class SecondActivity extends Activity {

	private TextView textView;
	private EditText editText;
	private Button  backButton;
	private Intent intent;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		Log.i("Activity_Log", "SecondActivity被创建");

		textView = (TextView)findViewById(R.id.textView1);
		editText = (EditText)findViewById(R.id.editText1);
		backButton = (Button)findViewById(R.id.button1);

		//获得启动SecondActivity的Intent,也就是MainActivity中new 的intent
		intent = this.getIntent();
		//获得传进来的值
		Bundle bundle = intent.getExtras();
		//通过key值找到所对应的Value
		String string = bundle.getString("12345");
		//设置的TextView
		textView.setText(string);

		backButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 往传进来的Intent设置数据
				String backString = editText.getText().toString();
				intent.putExtra("12345", backString);

				//设置返回码
				setResult(8890, intent);
				//关掉当前的activity
				finish();
			}
		});
	}
}

显示效果如下:

返回到MainActivity后的样子

ok。  通过Intent传值,以及通过新的Activity返回值,就已经讲完了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 20:51:02

Android 四大组件学习之Activity之四的相关文章

Android 四大组件学习之Activity一

Activity是Android四大组件中最基础也是最常用的组件之一.Activity作为一个应用程序组件,提供了一个与用户交互的界面.可以这么说Activity是和用户操作有密切相关的的,常用来负责与用户交互,可以通过setContentView来显示组件. 今天我们学习如何去创建一个Activity 第一步: 创建一个Android Application Project, 填入应用名称,工程名称,包名 点击Next下一步:下面的选择都是默认的. 直到 你就可以选择一个Activity进行创

Android 四大组件学习之Activity二

上一节学习如何创建一个Activity,以及如何加载界面. 这一节学习,如何从一个Activity跳转到另外一个Activity. 首先: 先创建二个Activity, 我就用上节课的MainActivity和SecondActivity MainActivity的布局文件,就随便拖放一个TextView和一个Button: <TextView android:id="@+id/textView1" android:layout_width="wrap_content&

Android 四大组件学习之Activity六

本节学习Activity的状态保存与恢复. 先用例子开始: 布局文件主要是实现如下,大家自行编写 Activity逻辑代码: public class FiveActivity extends Activity { private Button setButton; private Button getButton; private EditText editText; private float value; @Override protected void onCreate(Bundle s

Android 四大组件学习之Activity三

上一节学习了通过Intent去启动另外一个Activity. 本节学习通过Intent传值. 还是依旧创建两个Activity,我依旧是用之前的MainActivity和SecondActivity 先看MainActivity的布局文件,SecondActivity的布局文件就不列出,和上节课一样: <TextView android:id="@+id/textView1" android:layout_width="wrap_content" androi

android四大组件学习总结以及各个组件示例(1)

android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个Activity通常就是一个单独的屏幕(窗口). (2)Activity之间通过Intent进行通信. (3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity. (4)Activity生命周期>什么是

Android 四大组件学习之BroadcastReceiver一

本节课学习四大组件最后一个, 广播接受者. 顾名思义广播接受者就是接受广播呗.比如在现实社会中,以前每个人家都有一台收音机,这可就可以去接受广播发出来的消息.大家都知道,程序世界也是参照的显示生活设计出来的,那在Android系统中也引入了广播这个概念.那在Android系统中广播有什么作用呢? 举个例子:比如你正在玩游戏或者看视频突然手机电量过低,这时候就会弹出一个框,提醒您手机电量过低,请充电的提示.其实电量改变就是一种广播类型,当电量过低时,系统就会发生一条广播,这时候正在运行的程序就会收

Android 四大组件学习之ContentProvider一

ContentProvider作为四大组件之一,那它存在一定是有原因的? 那为什么引用ContentProvider呢?  我们先看一个例子. 大家在生活中用手机,比如你按了360手机管家, 其中360手机管家就有一个短信,通话记录,联系人备份的功能.那手机里的短信,联系人都是存放在数据库中的 比如联系人的信息是存放在contacts2.db中.既然数据是存放在数据库中的,那360手机管家就必须拿到这个数据.但是contac2.db对别的用户是没有权限的.那360是如何拿到手机联系人这些信息呢?

Android 四大组件学习之BroadcastReceiver四

本节学习系统中特殊的广播接收者. 我们前面几节不是说了,当广播接受者一旦注册到系统中,当系统发送的广播和你注册的广播的action匹配时,系统就会启动广播接收者所在的进程.除非用户手动停止广播接收者所在的进程.但是生活中有这样一种情况,比如说:我在玩网络游戏,假设说游戏本身在系统电量低的情况下,会自动保存当前游戏的进度,也就是存档的.可以这么说,此广播接受者只有在用户玩游戏时才需要启动,别的时候用户是不需要的.如果此广播接收者一直常驻于系统,那不是很浪费系统资源.所以我们就需要动态的启动广播接收

Android四大组件应用系列——Activity与Service交互实现APK下载

Servic与Activity相比它没有界面,主要是在后台执行一些任务,Service有两种启动方法startService()和bindService(),startService方式Service不可交互,可一直在后台即便应用结束,bindService方式可通过ServiceConnection获得运行的Service实例的方式实现Activity和Service之间的交互,通常Activity退出则绑定的服务也就取消了.我们可以通过同时执行启动服务和绑定服务的方式实现Service交互同