Android开发之Intent的传值--Application
每当我们想要将输入的值传递到多个界面时,只是使用Intent传值的话,就会有一些的弊端。
下面我就以三个页面为例,进行简单的说明一下:
思路:
1.第一个页面是客户输入相关的信息。
2.将客户输入的信息的第一项(我这里设的是name),在第二个页面中进行显示。
3.在第二个页面中直接跳转到第三个页面中,显示客户输入的全部的信息。
首先,在工程中创建一个MyApplication类,类的创建如下:
package com.example.test;
import android.app.Application;
public class MyApplication extends Application{
private static MyApplication singleton;
private String id;
private String name;
private String age;
private String address;
private String email;
public static MyApplication getInstance(){
return singleton;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public void onCreate(){
super.onCreate();
singleton = this;
}
}
上面创建一个用户的name,age,address,email信息。
在创建Application类时需要注意的是,这个类必须得在配置文件中进行配置才可以,要不然会抛出空异常错误。
具体实现的代码如下:
<application
android:allowBackup="true"
android:name="com.example.test.MyApplication" //特别注意
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.test.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.test.Activitytwo">
<intent-filter >
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
<activity
android:name="com.example.test.Activitythree">
<intent-filter >
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
</application>
接下来就是Activity中的代码的实现。在这里我就不写布局文件中的代码了,附上图,大家自己去写,也不是很难。
MainActivity的代码如下:
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private MyApplication myapp;
private EditText edtname;
private EditText edtage;
private EditText edtaddress;
private EditText edtemail;
private Button post;
private Button get;
private Button next;
private Button three;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myapp = MyApplication.getInstance();
edtname = (EditText)findViewById(R.id.name);
edtage = (EditText)findViewById(R.id.age);
edtaddress = (EditText)findViewById(R.id.place);
edtemail = (EditText)findViewById(R.id.email);
next =(Button)findViewById(R.id.next);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
test();
Intent inten = new Intent(MainActivity.this,Activitytwo.class);
startActivity(inten);
}
});
public void test(){
myapp.setName(edtname.getText().toString());
myapp.setAge(edtage.getText().toString());
myapp.setAddress(edtaddress.getText().toString());
myapp.setEmail(edtemail.getText().toString());
}
}
Activitytwo代码实现:
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Activitytwo extends Activity{
private String showname;
private TextView show;
private Button send;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activitytwo);
show = (TextView)findViewById(R.id.show);
send = (Button)findViewById(R.id.send);
showname = MyApplication.getInstance().getName();
show.setText(showname);
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Activitytwo.this,Activitythree.class);
startActivity(intent);
finish();
}
});
}
}
Activitythree代码实现:
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Activitythree extends Activity{
private TextView showname;
private TextView showage;
private TextView showplace;
private TextView showemail;
private Button finish;
private String name;
private String age;
private String place;
private String email;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activitythree);
showname = (TextView)findViewById(R.id.showname);
showage = (TextView)findViewById(R.id.showage);
showplace = (TextView)findViewById(R.id.showplace);
showemail = (TextView)findViewById(R.id.showemail);
finish = (Button)findViewById(R.id.finish);
name = MyApplication.getInstance().getName();
age = MyApplication.getInstance().getAge();
place = MyApplication.getInstance().getAddress();
email = MyApplication.getInstance().getEmail();
showname.setText(name);
showage.setText(age);
showplace.setText(place);
showemail.setText(email);
finish.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activitythree.this,MainActivity.class);
startActivity(intent);
finish();
}
});
}
}
上述就是我的基本的代码的实现以及界面的设计,界面不美观只是为了实现功能而已。
Application类是实现多个Activity之间共享数据。
希望上面的说明能够让大家明白。
Android开发之Intent的传值--Application的更多相关文章
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity ...
- Android开发之Intent略解
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意 ...
- Android开发之Intent.Action
1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的開始.比較经常使用. Input:nothing Out ...
- Android开发之Intent.Action 各种Action的常见作用
1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始.比较常用. Input:nothing Outpu ...
- Android开发之Intent.Action Android中Intent的各种常见作用
1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始.比较常用. Input:nothing Outpu ...
- Android开发之旅: Intents和Intent Filters(理论部分)
引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...
- Android开发之旅5:应用程序基础及组件
引言 上篇Android开发之旅:应用程序基础及组件介绍了应用程序的基础知识及Android的四个组件,本篇将介绍如何激活组关闭组件等.本文的主题如下: 1.激活组件:意图(Intents) 1.1. ...
- Android开发之旅2:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
随机推荐
- 如何使用MIME类型
今天在使用System.Net.WebClient做一个下载的时候,很郁闷,已经发不好的文件视频,却怎么也下载不了. 究其原因有两个, System.Net.WebClient对象的DownloadF ...
- 【HDOJ】3337 Guess the number
神一样的题目.简言之,利用手段获得测试用例的第一行,输出结果.很显然利用wa, TLE, OLE等judge status可以获得测试用例.因此,果断Python写一个acm提交机器人.依赖lxml库 ...
- [Hadoop源码解读](三)MapReduce篇之Job类
下面,我们只涉及MapReduce 1,而不涉及YARN. 当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做.建立一个Job对象,设置它的JobName,然后配置输入 ...
- bzoj1914
这道题用转化补集的思想一下就很简单了考虑不包括原点的三角形,显然对于一个点,它与原点构成的直线在这条直线同侧的任意两点和这个点构成的三角形一定不是黄金三角形为了避免重复我们只考虑直线上方的两点然后我们 ...
- iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………
http://www.cnblogs.com/wanyakun/p/3494323.html 强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的fr ...
- scp linux远程拷贝和本地拷贝命令
linux远程拷贝和本地拷贝命令 一.linux对linux 远程拷贝 scp命令 scp 文件名 root@远程ip:/路径/ 将本地home目录下的test.tar的文件拷贝 ...
- 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
前段时间研究flex工程自动编译的时候,遇到了阻碍,就放下了,直到今天每日构建的问题又一次给项目组带来了麻烦,于是我彻底愤怒了. 最后,我的怒火没有白费,写出来以发泄情绪. [基本原理]: adobe ...
- Failed to load unit 'PATM' (VERR_SSM_FIELD_NOT_CONSECUTIVE)
今天打开虚拟机启动的时候报错:Failed to load unit 'PATM' (VERR_SSM_FIELD_NOT_CONSECUTIVE) 后来发现虚机处于休眠状态,所以在虚机上右键,然后清 ...
- Linux 下svn恢复到某一版本
经常由于坑爹的需求,功能要切回到之前的某一个版本.有两种方法可以实现: 方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20: 2) 然后用 svn log ,查看历史 ...
- 教程-FastReport 的安装 心得
由于要使用报表,所以下载了FastReport 4.7.91,由于是第一次安装和使用FastReport报表,所以在安装的时候走了点弯路.把心得写一下吧. 我是第安装第二遍才完全理解安装过程,也可以定 ...