关于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实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
随机推荐
- 使用Java创建RESTful Web Service
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
- dev c++ 的一些快捷键
Ctrl+N新建源代码Ctrl+O打开工程或源文件Ctrl+S保存Ctrl+Alt+S另存为Ctrl+W关闭Ctrl+P打印Ctrl+Z回复Ctrl+Y重做Ctrl+Q切换头/源文件Ctrl+.注释C ...
- Lintcode: Interval Sum
Given an integer array (index from 0 to n-1, where n is the size of this array), and an query list. ...
- 树链剖分(单点更新,求区间最值,区间求和Bzoj1036)
1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5759 Solved: 2383 [Submi ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- 自己使用Fresco时遇到的相关问题
Fresco是facebook推出的一款强大的android图片处理库,github地址:https://github.com/facebook/fresco 里面有官方的使用配置文档,而且是中文的. ...
- bzoj1834 [ZJOI2010]network 网络扩容
第一问跑最大流,第二问新建一条边连接0和1,流量为上第一问的答案+k,费用为0,接下来图中每条边拆成两条边,第一条容量为C费用为0,第二条容量无穷费用为W,再跑一遍费用流即可. 代码 #include ...
- CCF真题之相邻数对
201409-1 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 输出一 ...
- 如何把Eclipse工程import Exprot到Android Studio
http://jingyan.baidu.com/article/b87fe19e9e209f5218356808.html
- ppaer 67 : matlab 函数errorbar
MATLAB ERRORBAR 这个函数的意思是:ERRORBAR(X,Y,L,U),X是自变量,Y是因变量,L是Y的变动下限,U是Y的变动上限 errorbar(X,Y,E) X是自变量,Y是因变 ...