两个Activity的通信:

两个Activity的通信:
package com.android.ActivityGo;


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.EditText;
import android.widget.TextView;


public class Activity1 extends Activity {
EditText first,second;   

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        
        first = (EditText) findViewById(R.id.first);  ///<---this get widget
        second = (EditText) findViewById(R.id.second);
        ///start widget is Button.  这个是Button类,暂时不明白为什么上一次eclipse这里竟然不能识别。
        findViewById(R.id.start).setOnClickListener(new OnClickListener(){
public void onClick(View v) {
sendCalculate();   ///当按钮按下时,这里执行。
}
        });
    }
    
    public void sendCalculate(){
    ///第一步:把要显示的Activity加载到Intent中。
    Intent i = new Intent(this, Activity2.class);
    ///第二步:创建一个Bundle,同时把要传递的数据放到 Bundle中
    Bundle b = new Bundle();
    b.putString("first", first.getText().toString());
    b.putString("second", second.getText().toString());
    
    ///第三步:在传递Intent的时候,顺带这把这个Bundle传递过去,这里用putExtras把他加过来。
    i.putExtras(b);
    ///第四步:开始Activity2并 设置一个请求码,这个requeueCode当这个Activity可以开启多个别的Activity时,用来让onActivityResult识别是哪个!
    startActivityForResult(i,10);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode,
                                    Intent data){
    switch (resultCode){
    case RESULT_OK:
    Bundle b = data.getExtras();    ///这里等待别 返回,没有用到requestCode是因为这个例子就启动了一个Activity。
    String string = b.getString("CALCULATION");    
    updateText(string);
    }
    }
    
    public void updateText(String s){
    TextView t = (TextView) findViewById(R.id.text);
    t.setText(s);
    }
}
333------另一个--------------
package com.android.ActivityGo;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;


public class Activity2 extends Activity {
    String value;
    
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        
        ///这里把Intent中的东西吐出
        Intent i = this.getIntent();
        Bundle b = i.getExtras();
        ///检索得到 String
        String v1 = b.getString("first");
        String v2 = b.getString("second");
        
        value = v1 + v2;  ///v1 string ,+ v2 string
        
        findViewById(R.id.reply).setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
replyCalculation();
}
        });
        
    }
    
    
    public void replyCalculation(){
    
    Intent i = new Intent(); ///这里发送出去,
    Bundle b = new Bundle();
    b.putString("CALCULATION", value);
    
    i.putExtras(b);
    
    this.setResult(RESULT_OK, i);
    this.finish();
    
    }
}


总结:
Bundle用来在多个Activity传递参数。
传递的步骤是:
1在发起的Activity中这样:
///第一步:把要显示的Activity加载到Intent中。
    Intent i = new Intent(this, Activity2.class);
    ///第二步:创建一个Bundle,同时把要传递的数据放到 Bundle中
    Bundle b = new Bundle();
    b.putString("first", first.getText().toString());
    b.putString("second", second.getText().toString());
    ///第三步:在传递Intent的时候,顺带这把这个Bundle传递过去,这里用putExtras把他加过来。
    i.putExtras(b);
    ///第四步:开始Activity2并 设置一个请求码,这个requeueCode当这个Activity可以开启多个别的Activity时,用来让onActivityResult识别是哪个!
    startActivityForResult(i,10);
 2在要新建的Activity中这样解析出信息:
    Intent i = this.getIntent();
        Bundle b = i.getExtras();
        ///检索得到 String
        String v1 = b.getString("first");
        String v2 = b.getString("second");
 3如果发起者需要 等新建的Activity执行完后返回数据,可以这样重载 protected void onActivityResult(int requestCode, int resultCode,
                                    Intent data)
                                    在其中这样做:{
    switch (resultCode){
    case RESULT_OK:
    Bundle b = data.getExtras();    ///这里等待别 返回,没有用到requestCode是因为这个例子就启动了一个Activity。
    String string = b.getString("CALCULATION");    
    updateText(string);
    }  
    
    
    
                           
http://forum.ubuntu.com.cn/viewtopic.php?f=74&t=353990

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值