在两个activity之间传数据有了很多介绍,在跳转时用putExtras将数据压进去,在新的activity的onCreate接收即可,大多数的资料是这样说的。我的需求稍稍不一样的地方,在跳转到新的activity后,原来的activity还在里面,在新的activity使用finish后就返回老的activity,从onResume函数看到回来了,无需通过跳转来完成,所以问题就是,新的activity如何给老的activity传数据呢?

解决方案 »

  1.   

    简单来说,一个activity在销毁前,向上一个activity传数据,但是这上一个activity到底是谁?它是不知道的。
      

  2.   

    怎么可以说不知道上一个Activity是谁谁呢。一搬开启一个新的Activity肯定是在旧的Activity中startActivity(Intent in)吧?如果要向前面的Activity传值。可以使用startActivityForResult()这个方法开启一个新的Activity。当然,如过真的如你所说,不知道上一个Activity是谁。那么可以尝试使用广播的方式。
      

  3.   

    新activity把数据写到文件里,老activity从文件里读出来
      

  4.   

    不知道你说的是不是startActivityForResult
      

  5.   

    使用application共享数据,具体的代码网上有
      

  6.   


    我的新activity是一个在文件列表中选一个文件,选中文件后通知上一级,不管上一级是什么activity。
      

  7.   

    楼主,使用startActivityForResult()来启动新的activity,靠谱方便,当新的finish掉之后,将数据放到intent里,setResult(int resultCode, Intent data),然后在老的activity里面重写onActivityResult方法:
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent result) {
            if (resultCode != RESULT_OK) {
                finish();
                return;
            }
        }
    里面的result就是在新的activity中设置的data传递过来的。
      

  8.   


    我的新activity是一个在文件列表中选一个文件,选中文件后通知上一级,不管上一级是什么activity。
    你的文件列表是在哪个Activity上启动的。那他就应该是文件列表的上一级Activity。
      

  9.   

    这个有帮助这个方法或者使用使用application共享数据
      

  10.   

    使用数据共享呀,文件,SQLITE都可以啊
      

  11.   

    A:Intent intent = new Intent();
    intent.setClass(B.class);
    startActivityForResult(intent,request_code);
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent result) {
            if (resultCode != RESULT_OK) {
             String a = result.getStringExtra(key);
                    }
        }B:
    Intent intent = new Intent();
    intent.putStringExtra(key,value);
    setResult(RESULT_OK,intent);
    finish();
      

  12.   

     if (resultCode != RESULT_OK) {
              String a = result.getStringExtra(key);
                     }更正if (resultCode == RESULT_OK) {
              String a = result.getStringExtra(key);
                     }
      

  13.   

    Activity如果不考虑多个实例,在类里加一个静态变量当全局变量用,就可以任意访问了。
    -------------------
    JAVA是没有全局变量的,连对象变量都没有全局的,有时连对象名是什么都不能知道的。
    但类的定义是全局性的。解决的简单有效办法就是利用类的静态变量解决全局问题:
    比如安卓程序有两幅窗口,主窗口类名 MainActivity  第二个窗口是SecondActivity类名是知道的,
    但对象名是不知道的。只要在主类中加一个 静态变量就可!
      public class MainActivity extends Activity { 
        static String rs;    //   静态变量将是全局性的,访问办法:  类名.静态变量名          static int  gloalV;  //    全局性的     
    ................}
    在另一个类中 SecondActivity  就可以访问它个全局变量了:    
    MainActivity.rs="全局变量,可以任意访问了!!!";  
     int  v=MainActivity.gloalV;     //  变量值取过来!
    用类的静态变量做全局变量有两个好处:   
      1.知道类名就可以任意全局访问静态变量,不用知道类的实例名(也称对象名);
       2.不管类有多少对象,静态变量只有一份,不需实例就可访问;
    ---------------
    这种土办法会不会有副作用就不知道了,希望高手点一点,我也是初学安卓半个月。
      

  14.   

    我会告诉你,在application中定义全局变量去set和get数据,非常方便,又不用长期存储,何必存什么文件数据库的。