zoukankan      html  css  js  c++  java
  • Android分步注册,Activity由B返回A修改再前往B,B中已填项不变

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

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

    主要代码如下:

     1 package com.example.valuepass;
     2 
     3 import com.example.programdemo.R;
     4 
     5 import android.app.Activity;
     6 import android.content.Intent;
     7 import android.os.Bundle;
     8 import android.util.Log;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 import android.widget.EditText;
    13 
    14 
    15 public class MainActivity extends Activity {
    16     private EditText et_phonenumber;
    17     private Button bt_next;
    18     private int ACTIVITY1 = 1;
    19     private int USERNAME = 2;
    20     private Bundle bundle = new Bundle();
    21     private Intent intent = new Intent();
    22     private String TAG = "MainActivity";
    23     private String username;
    24     @Override
    25     protected void onCreate(Bundle savedInstanceState) {
    26         super.onCreate(savedInstanceState);
    27         setContentView(R.layout.activity_main);
    28         et_phonenumber = (EditText) findViewById(R.id.et_phonenumber);
    29         bt_next = (Button) findViewById(R.id.bt_next);
    30         
    31         bt_next.setOnClickListener(new OnClickListener(){
    32             @Override
    33             public void onClick(View v){
    34                 bundle.putString("phonenumber", et_phonenumber.getText().toString());
    35                 Log.v(TAG,et_phonenumber.getText().toString());
    36                 bundle.putString("username", username);
    37                 intent.putExtras(bundle);
    38                 intent.setClass(MainActivity.this,Username.class);
    39                 startActivityForResult(intent,ACTIVITY1);  
    40             }    
    41         });     
    42     }
    43     
    44     @Override
    45     protected void onActivityResult(int requestCode,int resultCode,Intent data){
    46         if(requestCode == ACTIVITY1){
    47             if(resultCode == USERNAME){
    48                 Bundle getbundle;
    49                 getbundle = data.getExtras();
    50                 username = getbundle.getString("username");
    51                 Log.v(TAG,username);
    52             }
    53         }
    54         super.onActivityResult(requestCode, resultCode, data);
    55     }
    56  
    57 }
     1 package com.example.valuepass;
     2 
     3 import com.example.programdemo.R;
     4 
     5 import android.app.Activity;
     6 import android.content.Intent;
     7 import android.os.Bundle;
     8 import android.util.Log;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 import android.widget.EditText;
    13 import android.widget.TextView;
    14 
    15 public class Username extends Activity{
    16     private TextView et_phonenumber;
    17     private EditText et_username;
    18     private Button bt_next;
    19     private Button bt_back;
    20     private Bundle bundle = new Bundle();
    21     private Intent intent = new Intent();
    22     private int USERNAME = 2;
    23     private String TAG = "Username";
    24     
    25     @Override
    26     public void onCreate(Bundle savedInstanceState){
    27         super.onCreate(savedInstanceState);
    28         setContentView(R.layout.username);
    29         et_phonenumber = (TextView)findViewById(R.id.et_phonenumber);
    30         et_username = (EditText)findViewById(R.id.et_username);
    31         bt_next = (Button)findViewById(R.id.bt_next);
    32         bt_back = (Button)findViewById(R.id.bt_back);
    33         bundle = this.getIntent().getExtras();
    34         Log.v(TAG,bundle.getString("phonenumber"));
    35         et_phonenumber.setText(bundle.getString("phonenumber"));
    36         et_username.setText(bundle.getString("username"));
    37         
    38         bt_next.setOnClickListener(new OnClickListener(){
    39             @Override
    40             public void onClick(View v){
    41                  bundle.putString("username", et_username.getText().toString());
    42                  intent.putExtras(bundle);
    43                  intent.setClass(Username.this,Finish.class);
    44                  startActivity(intent);
    45             }
    46         });
    47         
    48         bt_back.setOnClickListener(new OnClickListener(){
    49             @Override
    50             public void onClick(View v){
    51                 Bundle bundle_back = new Bundle();
    52                 bundle_back.putString("username", et_username.getText().toString());
    53                 Log.v(TAG,bundle_back.getString("username"));
    54                 intent.putExtras(bundle_back);
    55                 setResult(USERNAME,intent);
    56                 onBackPressed();
    57             }
    58         });
    59     }
    60 
    61 }
    Username.java
     1 package com.example.valuepass;
     2 
     3 import com.example.programdemo.R;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.widget.TextView;
     8 
     9 public class Finish extends Activity{
    10     private TextView et_phonenumber;
    11     private TextView et_username;
    12     private Bundle bundle = new Bundle();
    13     @Override
    14     public void onCreate(Bundle savedInstanceState){
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.finish);
    17         
    18         bundle = this.getIntent().getExtras();
    19         et_phonenumber = (TextView)findViewById(R.id.et_phonenumber);
    20         et_username = (TextView)findViewById(R.id.et_username);
    21         et_phonenumber.setText(bundle.getString("phonenumber"));
    22         et_username.setText(bundle.getString("username"));
    23     }
    24 
    25 }
    Finish.java

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

    加flag启动activity
    Intent.FLAG_ACTIVITY_REORDER_TO_FRONT这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。

    打算有时间试一下。不过似乎要改onBackPressed();

    代码下载

    ————————————————————————————————————————————————
    来自企鹅娘的问候:
    欢迎交流哦,如果有帮助转载的话,请务必注明出处"企鹅娘's 学习笔记",让我也小小的开心一下
  • 相关阅读:
    APIO 2010 特别行动队 斜率优化DP
    洛谷 P2747 Canada Tour 周游加拿大 动态规划
    VIJOS-P1282 佳佳的魔法照片 排序
    [APIO2012]派遣 可并堆
    可并堆模板题-mergeable heap
    可并堆总结
    分治思想及树上点分治
    拉丁字母(英语)缩写
    区块链是什么?跟比特币有什么关系?
    究竟什么比特币?如何理解比特币?
  • 原文地址:https://www.cnblogs.com/hopecapital/p/4601682.html
Copyright © 2011-2022 走看看