如何将数据从一个活动传递到另一个活动而不使用意图?

时间:2012-11-22 15:27:51

标签: android android-intent android-activity

我已经在使用一个待定的意图..所以,如果我使用另一个意图并启动该意图,它将转到一个新的活动..我想避免这种情况。因此,我不想使用意图,而是想将数据从一个活动传递到另一种可能吗?

4 个答案:

答案 0 :(得分:7)

您可以使用静态方法将数据从一个活动获取到另一个活动。下面是示例代码

第一项活动

public class First extends Activity {

 static First INSTANCE;
 String data="FirstActivity"; 

 @Override
  public void onCreate(Bundle savedInstanceState) {

    INSTANCE=this; 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   }

 public static First getActivityInstance()
   {
     return INSTANCE;
   }

 public String getData()
   {
     return this.data;
   }
 }

第二项活动:

 public class Second extends Activity {

 String data; 

 @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);
    data=First.getActivityInstance().getData();  
    Toast.makeText(Second.this,"Data from first activity is"+data, 1).show();
   }
}

希望它对你有所帮助。

答案 1 :(得分:1)

如何设置全局变量类,然后在Activity1中设置它并在Activity2中访问它,如下所示:

全局变量类文件:Global.java

package <your packagename>;
public class Global {   
    public static String    stringToPass = "";
}

在文件中设置全局变量:Activity1.java

Global.stringToPass = "your string value to pass";
    startActivity(new Intent(Activity1.this, Activity2.class));

读取文件中的全局变量:Activity2.java

String gotString = "Global.stringToPass;

小心内存泄漏。

答案 2 :(得分:1)

您可以尝试使用Singleton

 public class Singleton{
       private static Singleton instance;

       private Singleton(){

       }

       public static Singleton getInstance(){
        if (instance == null){
            instance = new Singleton();
        }
        return instance;
    }
  // your fields, getter and setter here

 }

然后在你的第一个活动中

Singleton a = Singleton.getInstance();
a.setFoo("something here");

然后是你的第二个活动

Singleton b = Singleton.getInstance();
b.getFoo();

答案 3 :(得分:0)

您可以尝试使用全局类Application来共享您要发送的数据!只是在使用它们之前设置数据!