博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
startActivity与startActivityForResult中的intent使用
阅读量:5132 次
发布时间:2019-06-13

本文共 4686 字,大约阅读时间需要 15 分钟。

Intent中指定程序要执行的动作(如:view,edit,dial)以及执行到该动作时所需要的资料,最后调用startActivity()。

1、作用

程序跳转、传递数据

Action/Data/Type/Catogory(对执行动作的附加信息进行描述)/Extras(其它附加信息)/Component(对目标组件的描述)

23种形式

startActivity()/startActivityForResult()
BroadcastReceiver
startService(Intent)和bindService(Intent,ServiceConnection,int)

3、相关方法

intent.putExtra(name,value);

intent.putExtras(bundle);
intent.getExtra();
getIntent();

4、常用action

Intent.ACTION_DIAL

Intent.ACTION_CALL
Intent.ACTION_VIEW
Intent.ACTION_EDIT
Intent.ACTION_DELETE
Intent.ACTION_PICK(选择数据)

//这是一个MainActivity,会分别发送startActivity和startActivityForResultpackage com.browan.server;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.widget.Button;public class MainActivity extends Activity { protected static final int REQUST_CODE = 0; /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);//相关布局模板文件main.xml        find_and_modif_button();                            //startActivityForResult示例        Button.OnClickListener listener1 = new Button.OnClickListener()        {         public void onClick(View v)         {          Intent intent1 =  new Intent(MainActivity.this,Activity1.class);          intent1.putExtra("MainActivity", "这是来自MainActivity的数据。");          startActivityForResult(intent1,REQUST_CODE);         }        };            //startActivity示例        Button.OnClickListener listener2 = new Button.OnClickListener()        {         public void onClick(View v)         {          setTitle("这是在MainActivity");          Intent intent2 = new Intent(MainActivity.this,Activity2.class);          startActivity(intent2);         }        };                Button button1 = (Button) findViewById(R.id.button1);        button1.setOnClickListener(listener1);                Button button2 = (Button) findViewById(R.id.button2);        button2.setOnClickListener(listener2);            }   //对于返回结果的反映,startActivityForResult返回的结果指令的处理 protected void onActivityResult(int requst_code,int result_code,Intent data){     if(requst_code == REQUST_CODE)     {      if(result_code == RESULT_CANCELED)      {       setTitle("取消");      }      else if(result_code == RESULT_OK)      {       String temp = "";       Bundle extras = data.getExtras();       if(extras != null)       {        temp = extras.getString("store");       }       setTitle(temp);      }      else      {       setTitle("Others");      }     }    } }

下面再来看看Activity1.class部分:

package com.browan.server;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Activity1 extends Activity{  public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity1);                  Button.OnClickListener listener3 = new Button.OnClickListener(){       public void onClick(View v){                Bundle bundle = new Bundle();           bundle.putString("store", "这是Activity1返回的数据。");           Intent mIntent = new Intent();           mIntent.putExtras(bundle);                 setResult(RESULT_OK,mIntent); //这个就是返回去的消息,setResult在收到消息之后才会被触发返回发送                                          //MainActivity里面的onActivityResult就会对intent里面的result_code(RESULT_OK)处理            finish();       }      };               Button button3 = (Button) findViewById(R.id.button3);         button3.setOnClickListener(listener3);                   Bundle extras = getIntent().getExtras();//这里读取到了MainActivity传来的消息内容         String data = null;   if(extras != null)         {          data  = extras.getString("MainActivity");         }         setTitle("现在是在Activity1里:" + data);  }}

Activity2.class:

package com.browan.server;import android.app.Activity;import android.os.Bundle;public class Activity2 extends Activity{  public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity2);                  setTitle("这里是在Activity2里。");  }}

xml各个的布局:

5.5 activity1.xml
5.6 activity2.xml
AndroidManifest. xml
 

 

 

转载于:https://www.cnblogs.com/Tammie/archive/2012/08/08/2628518.html

你可能感兴趣的文章
postgreSQL 简单命令操作
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
第五章笔记
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
Node.js 连接 MySQL
查看>>
ACM-ICPC 2018 world final A题 Catch the Plane
查看>>