将数据从一个活动传递到另一个活动,但稍后再转到另一个活动

时间:2012-04-09 06:11:54

标签: java android android-activity

我的工作流程如下:

LoginActivity - > ActivityB - > ActivityC - > ActivityD

我想将数据从LoginActivity传递给ActivityD,但不是直接转到ActivityD。即,我想将数据从LoginActivity传递给ActivityD,但在我到达ActivityD之前转到ActivityB和ActivityC并在那里获取数据。

这可能吗?

我知道将数据从一个活动传递到另一个活动,代码如下:

        Intent i = new Intent(getApplicationContext(), AnotherActivity.class); 
        i.putExtra("key", (int)1); 
        i.putExtra("something", something); 
        startActivity(i);

AnotherActivity中,您可以执行以下操作来获取数据:

        Bundle extras = getIntent().getExtras();   
        if(extras !=null) 
        {  
            String var = extras.getString("something");
        }

但如果我想延迟直接参加活动,这不起作用。因此,如果我取出startActivity(i);并转到其他活动。当tyring获取最终活动中的数据时,程序崩溃。弹出好旧的NullPointerExeption。

有没有人知道如何做我所描述的事情?从一个活动获取数据到另一个活动,但不能立即进行(或开始)该活动?

4 个答案:

答案 0 :(得分:2)

如果您想传递这样的数据,最好使用共享首选项。 它使用简单,您可以在程序的任何位置使用数据。

SharedPreferences.Editor editor = prefs.edit();
editor.putString("key", (int)1);
editor.putString("something", something);
editor.commit(); 

在收到时:

SharedPreferences prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
String something = prefs.getString("something", null);

答案 1 :(得分:0)

您可以随时使用其中任何一种

•A singleton pattern to share the date across multiple non-consecutive activities.

•A shared preference.

•An external storage

•Entry into db.

•passing data with intents.

link会为您提供更多详细信息。

答案 2 :(得分:0)

我可以想出两个解决问题的方法。一个是你只是继续传递数据,这意味着在ACtivityB和ACtivityC中你需要运行代码

Intent i = new Intent(getApplicationContext(), AnotherActivity.class); 
i.putExtra("key", (int)1); 
i.putExtra("something", something); 
startActivity(i);

另一个选项(我认为更实用)是使用静态成员和静态方法创建一个单独的类来访问数据。它可能看起来像这样

public class SharedResource{
public static String mPassedName;
}

这个类不一定是线程安全的,所以要预先警告,如果你有多线程访问采取适当的预防措施。

答案 3 :(得分:0)

你可以通过两种方法来实现。 1)共享偏好设置

SharedPreferences.Editor editor = prefs.edit();
editor.putString("key", "Value");
editor.commit(); 

//获取共享首选项。

  String value = pref.getString("key" , "");

2)定义应用程序级别并访问相同的级别。

类由变量的getter和setter函数组成。 设置一个活动并进入另一个活动。