关于android中Bundle的使用
1、Android using Bundle for sharing variables
注:android中使用Bundle来共享变量,下例中Activity1和Activity2通过bundle共享一个变量myValue
Sharing variables between Activities is quite important point during development time of your Application. This Example suppose Activity1 from where you run up other Activity2 based on your selection from submenu. You gonna share variable myValue
From Activity1
Intent intent = new Intent(this,myActivity2.class);
Bundle bundle = new Bundle();
bundle.putString(“myValue“, myValue);
intent.putExtras(bundle);
navigation.this.startActivity(intent);
In Activity2
Bundle bundle = getIntent().getExtras();
act2MyValue= bundle.getString(“myValue“);
Now is your application powered to share variables between two different activities.
2、
Bundle is generally used for passing data between various Activities of android. It depends on you what type of values you want to pass but bundle can hold all types of values and pass to the new activity.
You can use it like .....
Intent intent = new
Intent(getApplicationContext(),SecondActivity.class);
intent.putExtra("myKey",AnyValue);
startActivity(intent);
Now you can get the passed values by...
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
3、
In this example, the main Activity (appropriately named 'MainActvity') will pass information to a sub-activity (called SecondaryActivity). SecondaryActivity will allow you to alter that information and then return it to MainActivity. The bundle of information will be sent back and forth between the Activity objects via an Intent object.
In order to pass the information we'll create our Intent object and do two things with it before sending it off. First, we'll specify SecondaryActivity as the target by passing it into the Intent's constructor. Then we'll stuff the information into it (the information is stored in a 'Bundle' object that lives inside the Intent - the Bundle is created when you call the putExtras() method of the Intent object). Once our Intent is ready to go, our MainActivity will simply launch it by passing it as a parameter into startActivityForResult().
When SecondaryActivity is created, it will check to see if an Intent is available. If so, it wil extract the data from the Bundle and put it into an EditText so that you can alter it. Then you can click a button to send it back to MainActivity. When the button is clicked, a new Intent is created with the updated information stuffed into a Bundle. SecondaryActivity then calls setResult() which will return the information back to MainActivity.
It's important to note that when you pass information around like this, you'll have to add an entry into the AndroidManifest.xml file. I always seem to forget this step. You'll have to add the following line of code into the <application> section:
<activity android:name=".SecondaryActivity"/>
Here's the code...
This is the layout file for MainActivity (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="MAIN ACTIVITY"/>
<EditText android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click To Launch Secondary Activity"/>
</LinearLayout>
Here's the code for the MainActivity class...
package com.remwebdevelopment; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener {
private final int SECONDARY_ACTIVITY_REQUEST_CODE=0;
private EditText mEditText1;
private Button mButton1;
//DONT FORGET: to add SecondaryActivity to the manifest file!!!!!
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText1 = (EditText)findViewById(R.id.editText1);
mButton1 = (Button)findViewById(R.id.button1);
mButton1.setOnClickListener(this);
}
public void onClick(View view){
if(view == mButton1){
//create a new intent and specify that it's target is SecondaryActivity...
Intent intent = new Intent(getApplicationContext(),SecondaryActivity.class);
//load the intent with a key "myKey" and assign it's value
//to be whatever has been entered into the text field...
intent.putExtra("myKey",mEditText1.getText().toString());
//launch the secondary activity and send the intent along with it
//note that a request code is passed in as well so that when the
//secondary activity returns control to this activity,
//we can identify the source of the request...
startActivityForResult(intent, SECONDARY_ACTIVITY_REQUEST_CODE);
}
}
//we need a handler for when the secondary activity finishes it's work
//and returns control to this activity...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
Bundle extras = intent.getExtras();
mEditText1.setText(extras != null ? extras.getString("returnKey"):"nothing returned");
}
}
Here's the layout file for SecondaryActivity (secondary_activity.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="SECONDARY ACTIVITY"/>
<EditText android:id="@+id/txtSecondary"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btnSecondary"
android:text="Click To Return to Main Activity"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Finally, here's the code for the SecondaryActivity class...
package com.remwebdevelopment; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText; public class SecondaryActivity extends Activity{
private EditText mEditText2;
private Button mButton2;
private String mIntentString; @Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState); setContentView(R.layout.secondary_activity); mEditText2 = (EditText)findViewById(R.id.txtSecondary);
mButton2 = (Button)findViewById(R.id.btnSecondary);
//add the event handler for the button...
mButton2.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
mIntentString = mEditText2.getText().toString();
//create a new intent...
Intent intent = new Intent();
//add "returnKey" as a key and assign it the value
//in the textbox...
intent.putExtra("returnKey",mEditText2.getText().toString());
//get ready to send the result back to the caller (MainActivity)
//and put our intent into it (RESULT_OK will tell the caller that
//we have successfully accomplished our task..
setResult(RESULT_OK,intent);
//close this Activity...
finish();
}
}); //if the activity is being resumed...
mIntentString = savedInstanceState != null ? savedInstanceState.getString("myKey"):null; //check to see if a Bundle is .
if(mIntentString == null){
//get the Bundle out of the Intent...
Bundle extras = getIntent().getExtras();
//check to see if "myKey" is in the bundle, if so then assign it's value
// to mIntentString if not, assign "nothing passed in" to mIntentString...
mIntentString = extras != null ? extras.getString("myKey") : "nothing passed in";
}
//set the textbox to display mIntentString...
mEditText2.setText(mIntentString);
} }
关于android中Bundle的使用的更多相关文章
- Android中Bundle和Intent的区别
Bundle的作用,以及和Intent的区别: 一.Bundle: A mapping from String values to various Parcelable types 键值对的集合 类继 ...
- 【转】Android中如何使用Bundle传递对象[使用Serializable或者Parcelable] -- 不错
原文网址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1211/694.html Android中Bundle类的作用 Bun ...
- Android中Intent传值与Bundle传值的区别详解
Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面 这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- Android中的Parcel机制 实现Bundle传递对象
Android中的Parcel机制 实现了Bundle传递对象 使用Bundle传递对象,首先要将其序列化,但是,在Android中要使用这种传递对象的方式需要用到Android Parc ...
- 【转】Android中intent传递对象和Bundle的用法
原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中使用ViewFlipper实现屏幕页面切换(关于坐标轴的问题已补充更改)
屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如 ...
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
随机推荐
- 错过C++
曾相识的C++--2008年那是还在学校,接触到了这门语言,可遗憾的是当时,自己没有能静下心好好学习这门语言.所以相识了了半年的c++就这样不见. 如今又相逢,但已经感觉到很陌生,陌生的我们互补相认.
- Azure billing 分析
昨天把西欧的2012的VM删掉,在北美新建一个2008的VM,装了sql2005 express 在C盘,这样存储就变成2个位置了,西欧和美国,然后放在那里不操作一天,发现billing多了很多, S ...
- Smarty模板
Smarty模板 是做什么用的?? 是将前端的显示和后台的逻辑进行分离,就相当于把前台显示的页面和后台要实现的某些功能的逻辑给分离出来了,分离在两个文件里,也就是说,前端只负责显示,后端只负责逻辑操作 ...
- .NET: C#: System.Diagnostics
1. Trace & Debug 理解这两者的区别,Trace有个Listners.Add()非常好用,这里网上有个在ListBox里输出Debug和Trace信息的 using System ...
- [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)
这次公司要把MS SQL Server 2000 服务器上的数据库复制到新的服务器上面去,于是几百个数据库文件就交给我附加到新服务器上了 以前一直没接触过这方面的东西,于是果断谷歌了也百度了 找 ...
- Javascript动态加载Html元素到页面Dom文档结构时执行顺序的不同
我们有时会通过ajax动态获取一段Html代码,并且将这段代码通过javascript放到页面的Dom结构中去. 而很多时候通过ajax动态获取的Html代码中也包含javascript代码,有一点需 ...
- Android 带checkbox的listView 实现多选,全选,反选
由于listview的一些特性,刚开始写这种需求的功能的时候都会碰到一些问题,重点就是存储每个checkbox的状态值,在这里分享出了完美解决方法: 布局文件: [html] <?x ...
- 鸟哥的linux私房菜学习记录之档案权限与目录配置
在linux中可以通过ls来查看文件 如ls -al,可以看到类似以下的内容 给个例子来理解下 在目录中如果只有r权限没有x权限无法进入该目录
- 统计SQL语句耗时百分比
-- sql语句耗时百分比 declare @tmptb table(id int,name varchar(50),total_worker_time bigint,rate varchar(50) ...
- linux设备驱动归纳总结(五):4.写个简单的LED驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-84693.html linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxx ...