如何在另一个活动中使用活动数据?

时间:2015-02-04 11:34:44

标签: android android-intent android-activity

假设我有2个活动activity1和activity2。在activity1中,我有一个简单的表单。这是xml文件。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">


<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="25dp"
        android:layout_marginTop="25dp"
        android:text="@string/m_informations"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/FirstName"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName" >

        <requestFocus />

    </EditText>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/Name"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/Email"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textEmailAddress" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/confirm" />

</LinearLayout>

我现在想要在activity2中使用这些Edittexts的数据,因为他们知道这两个活动之间没有链接。我的意思是在这两项活动之间,还有其他活动开始。

我想在我在activity2中创建的特定函数中使用这些数据。

让我们说它是这样的:

void write(String st)
{
 st = edittext1 value
}
例如,

st必须获取activity1

的edittext1的值

提前谢谢!

2 个答案:

答案 0 :(得分:1)

Intent in = new Intent(activity1.this, activity2.class);
in.putExtra("message", message);
startActivity(in);

在acticity2中,您可以获得如下数据:

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");

如果您在activity1中获取了一些数据。但是从activity1你调用activity3,然后从activity3调用activity2。并且您希望activity2中的数据然后您可以使用sharepreference:

在您获取数据的activity1中,您可以存储以下数据:

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("myName", "PPD");
editor.putInt("id", 1);
editor.commit();

在activity2中你会得到它:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 

  String name = prefs.getString("myName", "No Name");
  int idName = prefs.getInt("id", 0); 

答案 1 :(得分:1)

使用“共享首选项”存储和访问其他活动中的数据。 在共享首选项中,我们创建一个只能在当前应用程序中访问的文件,我们在其中添加键值对,然后在需要时加载它们

实施例。在活动1中:

EditText et1=(EditText) findViewById(R.id.editText1);
String et1_val=et1.getText().toString();
SharedPreferences pref=getSharedPreferences("MYPREF", 0);
//creating a shared preference with the name "MYPREF" and 0 is for default settings

final SharedPreferences.Editor editor=pref.edit();
//creating an editor to add the KeyValue Pairs to the preferences file.

editor.putString("et1_val",et1_val);
//adding the keyvalue pairs to the editior.

editor.commit();
//To close and commit the changes in the shared preference

在活动2中: 你的方法是这样的:

void write(String st)
{

SharedPreferences pref=getSharedPreferences("MYPREF", 0);
//getting reference to the shared preference we created.

String edit_text1_value=pref.getString("et1_val","");
//"" is the default value when the requested key has no value associated with it.

st=edit_text1_value;
//copiying the value of the edit text 1 into st
}

有关更多详情请访问此链接: Shared Preferences in Android