如何在安卓中向创建的活动发送数据

4

我需要将 A 活动中 EditText 中的数据发送到 B 活动。我尝试了以下方法:

Intent intent1=new Intent(A.this,B.class);
intent1.putExtra("fromA", "text");
startActivity(intent1); 

但它不起作用,因为活动B具有android:launchMode="singleTask"并且在先被创建。

还有别的方法可以发送数据吗?

3个回答

9

您可以在Activity B中覆盖onNewIntent()方法,并在该方法中接收intent

示例代码如下:

@Override
protected void onNewIntent(Intent i)
{
  String s = i.getStringExtra("fromA");
}

在上面的代码中,您将从Activity A获取值并将其赋给s变量。

1
您可以通过iPhone的方式来实现这一点。创建一个类,在启动新活动之前设置数据,并从新活动访问相同的数据。
这将按以下方式工作:
  1. 有两个活动FirstActivitySecondActivity
  2. 要发送的数据是名字和姓氏
因此,将有一个类,其中将具有数据变量。
 public class DataTransporter{
      public static String firstName;
      public static String lastName;
 }

在第一项活动中,您的代码将是:

 DataTransporter.firstName = "abc";
 DataTransporter.lastName = "xyz"; 
 Intent intent = new Intent(FirstActivity.this,SecondActivity.class)
 startActivity(intent)

在第二个活动中,您可以获取这些数据。
 @Override
 protected void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   String first = DataTransporter.firstName;
   String last = DataTransporter.lastName;
 }

一旦获取到数据,您可以从传输器类中删除数据(如果需要)。


0

我更喜欢使用SharedPreferences来保存我的数据并在我的类中使用,此外它们将被保存到设备上,即使应用程序被杀死后也可以使用...这里有一个例子!

//Some String that I should remember, I am just using the package name for now
String app = this.getPackageName();/*This is going to be used more like a file to save my stuff to*/
//Setting our sharedpreferences
SharedPreferences sha = sha = getApplicationContext().getSharedPreferences(app, SherlockActivity.MODE_PRIVATE);


String myString = "This is the String that you want to save so you can use among your classes"

//Now we call in an editor for that SharedPreferences so we can write and delete stuff from it .

Editor edit = sha.edit();

//Now we insert our String.
edit.putString("Something_you_can_remember" , myString);//You will need the "Something_you_can_remember" a few lines ahead , so remember it !
edit.apply(); //Or we can use edit.commit() , but I prefer apply()

//Now our String is saved ! So lets read it !

String whatever = sha.getString("Something_you_can_remember" , "The String incase myString didn't even exist , saves you from a NullPointerException");

//Here we go ! Now we have our String saved and can be readable among the classes !

此外,如果您想删除该字符串或者您在其中“放置”的任何内容,可以调用


edit.remove("Something_you_can_remember"); //or edit.clear() to remove all the values stored !

希望这能帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接