【Android开发-9】信息时代,Activity和Activity怎么交流

前言:在信息时代,人们不必像古代人那样飞鸽传书,随便一个短信、微信、QQ、微博都可以和自己亲爱的小伙伴快速沟通交流。在这样眼花缭乱的信息时代,选择一种合适自己的沟通工具是很有必要的,Android中的Activity与Activity之间的传参方法也是很多种的,在项目中怎么选择信息交互方法,就看项目的需求和自己的经验。

弄例子之前需要了解一个东西:Intent;

书上和网上看到的概念解释都很多,但本人喜欢它的英文意思:意图。你的意图想干嘛,跟它说了就行。比如我要传参,那你在这个Intent中设置完了,到第二个界面通过你设置的意图传参,就可以解析出来。比如你意图要打开界面,你在Intent里面设置好要打开的界面参数,然后通过方法调用就可以。或者更简单的说明就是起传递作用!

开始实战理解:

1.新建个项目:ActivityIntent

2.根据上一篇,创另外一个界面,创建的文件为:activity_first.xml和FirstActivity

activity_first.xml中界面布局的代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   >

    <EditText
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_centerHorizontal="true" />

    <Button
        android:id="@+id/close_1"
        android:layout_below="@id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="关闭"

        />

</RelativeLayout>

主界面布局文件代码如下:

<RelativeLayout 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"
    tools:context="${relativePackage}.${activityClass}" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="界面之间传参"
        android:layout_centerHorizontal="true" />
    <Button
        android:id="@+id/Open_1"
        android:layout_below="@id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Intent传参(第一种)"

        />
      <Button
        android:id="@+id/Open_2"
        android:layout_below="@id/Open_1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Intent传参(第二种)"

        />
        <Button
        android:id="@+id/Open_3"
        android:layout_below="@id/Open_2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Intent传参(第三种)"

        />

</RelativeLayout>

3.把新建的界面布局加入程序,修改下AndroidManifest.xml,在</application>节点前添加内容如下::

 <activity
            android:name=".FirstActivity"
            android:label="@string/app_name" >
 </activity>

4.编写入口代码MainActivity如下:

package com.wyz.activityintent;

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

public class MainActivity extends Activity {

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

		Button intentBtn = (Button)findViewById(R.id.Open_1);
		Button intentBtn_2 = (Button)findViewById(R.id.Open_2);
		Button intentBtn_3 = (Button)findViewById(R.id.Open_3);

		intentBtn.setOnClickListener(new BtnListener());
		intentBtn_2.setOnClickListener(new BtnListener());
		intentBtn_3.setOnClickListener(new BtnListener());
	}

	class BtnListener implements OnClickListener {

		@Override
		public void onClick(View v) {

			Intent intent = new Intent(MainActivity.this, FirstActivity.class);

			switch(v.getId())
            {
            	case R.id.Open_1:  //第一种

            		intent.putExtra("name", "wyz_1_");
            		intent.putExtra("age", 18);
            		startActivity(intent);
            		break;

            	case R.id.Open_2:  //第二种

            		Bundle bundle = new Bundle();
            		bundle.putString("name", "wyz_2_");
            		bundle.putInt("age", 27);

            		intent.putExtras(bundle);
            		startActivity(intent);
            		break;
            	case R.id.Open_3: //第三种

            		intent.putExtra("name", "wyz_3_");
            		intent.putExtra("age", 35);

            		startActivityForResult(intent, 0);

            		break;
            	default:
            			break;
            }
		}

	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode == 0)	//这个请求码对应startActivityForResult(intent, 0);
		{
			if(resultCode == 1)  //这个请求码对应打开界面的setResult(1, resultIntent);
			{
				String sRet = data.getStringExtra("return");  

				Toast.makeText(getApplicationContext(), sRet, Toast.LENGTH_LONG).show();;

			}
		}

		super.onActivityResult(requestCode, resultCode, data);
	}
}

4.编写另外一个界面业务代码FirstActivity如下:

package com.wyz.activityintent;

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

public class FirstActivity extends Activity {

	int iType=0;	//判断是第几种方法触发,默认0

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

		EditText text = (EditText)findViewById(R.id.text);
		Button close_btn = (Button)findViewById(R.id.close_1);

		close_btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if(iType == 3)	//等于第三种时,关闭界面返回参数
				{
					Intent resultIntent = new Intent();
					resultIntent.putExtra("return", "Hello wyz");
					setResult(1, resultIntent);
					FirstActivity.this.finish();
				}
				else
				{
					FirstActivity.this.finish();
				}
				FirstActivity.this.finish();
			}
		});

		Intent intent = getIntent();

		String sName = intent.getStringExtra("name");

		//int iAge = intent.getIntExtra("age", 0);  //获取参数第一种
		int iAge = intent.getExtras().getInt("age");	//获取参数第二种
		String sAge = String.valueOf(iAge);
		text.setText(sName+sAge);	//设置显示结果

		if(sName.compareTo("wyz_3_") == 0)
		{
			iType = 3;
		}

	}
}

实战效果:

时间: 2024-08-08 05:34:05

【Android开发-9】信息时代,Activity和Activity怎么交流的相关文章

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效

【Android开发-8】生命周期,Activity中打开另外一个Activity

前言:生命中有许多人陪伴自己走过一生中的某段旅程,只是有些人只是某阶段出现,有些人却陪伴自己很久.就像小学.中学.高中.大学,那些曾经以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意,或失意:渐渐地那些画面只剩回忆.天涯各自安命,能在一起的就尽力珍惜吧,不在一起地就衷心地祝福,我们都需要一种姿态生活下去!Android中的Activity的生命中,我们经常需要打开另外一个Activity,即另外一个界面.这个可能出现的时间很短暂,然后又回到主界面.但是这两个Activity都在各自的生命周

【Android开发-7】生命周期,Activity的生老病死

前言:生老病死,是每个人都要经历的事情.所以不必惊慌,静下心,想想自己在人生所处的每个阶段该做些什么,才能让自己的人生价值提高,或者说自身价值提高.在一个生命周期里,某个阶段该完成的事,没完成,也许就会影响到整个生命周期.所以有时候人生不能堕落,一堕落也许许多美好的事情就会错过了,等待你的就只有无声的忏悔! 对于Activity的生命周期的流程,最经典的一张图如下: 1.一个Activity A启动时,它会经历下面各个阶段: onCreate()-->onStart()-->onResume(

android开发异常信息收集程序代码

首先创建全局的Application ,此Application全局通用. package com.demo.utils; import com.demo.exception.CrashHandler; import android.app.Application; /** * 全局的context,任意位置调用 * @author Administrator * */ public class GlobalApplication extends Application { private st

Android开发学习笔记之四大组件---Activity的介绍,创建以及生命周期

最近重新温习关于android开发的基础知识,还是分享到博客里,一方面分享给有需要的同学,一方面方便自己后期查看 一.什么是Activity 通俗来讲,一屏的界面就是一个Activity,套用比较教科的话,在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应.Activity之间通过Intent进行通信,Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View

转-android开发中如何结束所有的activity

每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 Java代码:   //关闭当前activity方法一 finish(); //关闭当前界面方法二 android.os.Process.killProcess(android.os.Process.myPid()); //关闭当前界面方法三 System.exit(0); //关闭当前界面方法四 this.onDestroy(); 但如果已经启动了四个Activity:A,B,C和D, 在D

android开发中如何结束所有的activity

每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 Java代码   //关闭当前activity方法一 finish(); //关闭当前界面方法二 android.os.Process.killProcess(android.os.Process.myPid()); //关闭当前界面方法三 System.exit(0); //关闭当前界面方法四 this.onDestroy(); 但如果已经启动了四个Activity:A,B,C和D, 在D

android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode

转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50749728 首先还是先介绍下Activity的launchMode.一共同拥有四种. 1.standard. 2.singleTop. 3.singleTask. 4.singleInstance. 第一种standard.就是无论怎么样每次启动都会创建一个新的实例.也就是系统默认的启动方式. 我们设置ActivityA的启动方式为standard.设置点击运行startActiv

Android开发学习之路-Service和Activity的通信

在很多时候,Service都不仅仅需要在后台运行,还需要和Activity进行通信,或者接受Activity的指挥,如何来实现,来看代码. 定义一个服务 1 // 创建一个服务,然后在onBind()中返回内部类(继承自Binder)的实例,使得活动能获得该实例,并操作此服务 2 public class MyService extends Service { 3 4 // 创建一个内部类的实例,被活动获得后,操作服务 5 private mBinder binder = new mBinder

Android开发艺术探索(一)——Activity的生命周期和启动模式

Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被系统回收或者由于当前设备的configuration发生改变而导致Activity被销毁重建 1.1 典型生命周期分析 旧活动的OnPause先调用,新Activity才启动 异常分析: 1.资源相关的系统配置发生改变,导致Activity被杀死并重新创建 系统只在Activity导致终止的时候才会调用OnS