zoukankan      html  css  js  c++  java
  • Activity之间的信息传递方式

    在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

    直接进入实例

    Intent newIntent = new Intent(MainActivity.this,LogInActivity.class);
    // 传递参数
    newIntent.putExtra("这是传递给子Activity中的信息", "MainActivity"); 
    // 开始一个新的 Activity等候返回结果
    startActivityForResult(newIntent,999);

    在主Activity中,应该重写onActivityResult方法,该方法是用来接收子Activity中的返回值,及处理结果

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        switch (requestCode) {
           //这个requestCode返回码,是子Activity中定义的不同处理结果的标识,比如,这里用switch 处理不同结果 
            case 999:
                //取得来自SecondActivity页面的数据,并显示到画面 
                  Bundle bundle = intent.getExtras();
                 //获取Bundle中的数据,注意类型和key 
                 String username = bundle.getString("username");
         Toast.makeText(this, "成功返回了", Toast.LENGTH_LONG).show();
    }

    假设子Activity中有一个定义submit的方法,用来监听按钮触发返回的事件,其中其中的setResult()方法相当于启动了Activity,不要忘记finish(),否则这个界面切不会去

    public void submit(View v) {
            int sw = v.getId();
            switch (sw) {
            case R.id.login:
                String username = usernametext.getText().toString();
                  Bundle bd = new Bundle();
                  bd.putString("username", username); 
                  Intent it = new Intent();//注意,这里是空的,有Activity的话,会覆盖前面主Activity的回调监听
                  it.putExtras(bd);
                  this.setResult(999, it);;
                  finish();
                break;
            default:
                Toast.makeText(this, R.string.errordo, Toast.LENGTH_LONG).show();
                break;
            }
     
        }

    以上是同一个程序内Activity中通信方式,如果不是在同一个程序的话,用uri来做,有需要的话,我再完善

  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/haoxiqiang/p/2889463.html
Copyright © 2011-2022 走看看