某日突然想到标题问题,一般来说返回上一个Activity,当前Activity应该自动销毁。要想保留值,便想到用bundle传递的方式

最后功能是实现了,但感觉方法很笨。

主要代码如下:

 package com.example.valuepass;

 import com.example.programdemo.R;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText; public class MainActivity extends Activity {
private EditText et_phonenumber;
private Button bt_next;
private int ACTIVITY1 = 1;
private int USERNAME = 2;
private Bundle bundle = new Bundle();
private Intent intent = new Intent();
private String TAG = "MainActivity";
private String username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_phonenumber = (EditText) findViewById(R.id.et_phonenumber);
bt_next = (Button) findViewById(R.id.bt_next); bt_next.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
bundle.putString("phonenumber", et_phonenumber.getText().toString());
Log.v(TAG,et_phonenumber.getText().toString());
bundle.putString("username", username);
intent.putExtras(bundle);
intent.setClass(MainActivity.this,Username.class);
startActivityForResult(intent,ACTIVITY1);
}
});
} @Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == ACTIVITY1){
if(resultCode == USERNAME){
Bundle getbundle;
getbundle = data.getExtras();
username = getbundle.getString("username");
Log.v(TAG,username);
}
}
super.onActivityResult(requestCode, resultCode, data);
} }
 package com.example.valuepass;

 import com.example.programdemo.R;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class Username extends Activity{
private TextView et_phonenumber;
private EditText et_username;
private Button bt_next;
private Button bt_back;
private Bundle bundle = new Bundle();
private Intent intent = new Intent();
private int USERNAME = 2;
private String TAG = "Username"; @Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.username);
et_phonenumber = (TextView)findViewById(R.id.et_phonenumber);
et_username = (EditText)findViewById(R.id.et_username);
bt_next = (Button)findViewById(R.id.bt_next);
bt_back = (Button)findViewById(R.id.bt_back);
bundle = this.getIntent().getExtras();
Log.v(TAG,bundle.getString("phonenumber"));
et_phonenumber.setText(bundle.getString("phonenumber"));
et_username.setText(bundle.getString("username")); bt_next.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
bundle.putString("username", et_username.getText().toString());
intent.putExtras(bundle);
intent.setClass(Username.this,Finish.class);
startActivity(intent);
}
}); bt_back.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Bundle bundle_back = new Bundle();
bundle_back.putString("username", et_username.getText().toString());
Log.v(TAG,bundle_back.getString("username"));
intent.putExtras(bundle_back);
setResult(USERNAME,intent);
onBackPressed();
}
});
} }

Username.java

 package com.example.valuepass;

 import com.example.programdemo.R;

 import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; public class Finish extends Activity{
private TextView et_phonenumber;
private TextView et_username;
private Bundle bundle = new Bundle();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.finish); bundle = this.getIntent().getExtras();
et_phonenumber = (TextView)findViewById(R.id.et_phonenumber);
et_username = (TextView)findViewById(R.id.et_username);
et_phonenumber.setText(bundle.getString("phonenumber"));
et_username.setText(bundle.getString("username"));
} }

Finish.java

PS:后来在网上看到类似问题,有人回答:

加flag启动activity
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。 打算有时间试一下。不过似乎要改onBackPressed();

代码下载

Android分步注册,Activity由B返回A修改再前往B,B中已填项不变的更多相关文章

  1. Android-管理Activity生命周期 -开始一个Activity

    很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的.activity启动和销毁的时候都用很多回调方法. 这里将要 ...

  2. Android开发学习—— activity

    activity生命周期 #Activity生命周期###void onCreate()* Activity已经被创建完毕###void onStart()* Activity已经显示在屏幕,但没有得 ...

  3. Android应用开发-Activity(重制版)

    Android四大组件:Activity,Service,Broadcast Receiver,Content Provider Activity是Context的子类,同时实现了Window.Cal ...

  4. Android复习笔记--Activity

    #Activity注册 Android四大组件(Activity,Service,Broadcast Receiver, Content Provider)都需要在AndroidManifest中注册 ...

  5. android学习之activity

    Activity 的生命周期 和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理.与 MIDlet 不同的是安装在 android 中的所有的 ...

  6. Android学习笔记——Activity的启动和创建

    http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html Android Activity学习笔记——Activity的启动和创建 ...

  7. android ApplicationContext Context Activity 内存的一些学习

    Android中context可以作很多操作,但是最主要的功能是加载和访问资源. 在android中有两种context,一种是application context,一种是activity cont ...

  8. Android 退出多Activity的application的方式

    在开发过程中,我们常常需要一个退出功能,来退出该应用的所有Activity.下面,我们列举一些退出应用的几种方式.以下用的源码点击查看源码地址 欢迎star,欢迎fork 利用ActivityCont ...

  9. <Android基础>(二) Activity Part 1

    1.活动的基本用法: 1) 手动创建活动.创建加载布局 2) 在AndroidManifest文件中注册 3) 在活动中添加Button.Toast.Menu 4) 销毁活动 2.Intent 1) ...

随机推荐

  1. 2016年5月11日摘自知乎的一些Redis大概了解

    1. 知乎日报的基础数据和统计信息是用 Redis 存储的,这使得请求的平均响应时间能在 10ms 以下.其他数据仍然需要存放在另外的地方,其实完全用 Redis 也是可行的,主要的考量是内存占用.就 ...

  2. Microsecond and Millisecond C# Timer[转]

    文章转至:http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer IntroductionAny ...

  3. 遇上了artTemplate做的东西

    js现在最牛的地方是 有了Node.js后,前后端的界限几乎都消失了,围绕着它,出现了一整套生态体系. 在生态方面,比php好太多了.

  4. 【学习整理】Tarjan:强连通分量+割点+割边

    Tarjan求强连通分量 在一个有向图中,如果某两点间都有互相到达的路径,那么称中两个点强联通,如果任意两点都强联通,那么称这个图为强联通图:一个有向图的极大强联通子图称为强联通分量.   算法可以在 ...

  5. PHP学习笔记:使用session来存储用户的登录信息

    session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等. 用户在登录成功以后,通常可以将用户的信息存储在session中,一般 ...

  6. 转载Quandl R Package

    Quandl R Package 通过Quandl API可以快速准确地获取宏观经济数据.(https://www.quandl.com/docs/api) 分享两个国外的优秀网站 R和Python在 ...

  7. B/S和C/S的区别(转)

    一.什么是CS和BS结构? 1.C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix ...

  8. ahjesus C# Flags 位域略说

    class Program { [Flags] public enum Week { [Description("星期一")] Monday = << , [Descr ...

  9. C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串

    C#中要如何才能删除一个字符串数组中的空字符串呢?随着微软对C#不断发展和更新,C#中对于数组操作的方式也变得越来越多样化.以往要实现过滤数组中的空字符串,都是需要实行循环的方式来排除和过滤.C#3. ...

  10. VS2010运行正常的控制台程序在VS2015中出现乱码的解决方法

    以前在Visual Stuido 2010中运行正常的控制台程序,在Visual Studio 2015中出现乱码,找到<Visual Studio 2015的坑:中文字符串编译后成乱码> ...