如果下一个活动2已经开始,我希望有一个显示在活动1上的变量

时间:2017-10-25 20:31:46

标签: android

我有一些活动,在Acivity 1上我设置了一个变量active,这是真的。

活动1 =>活动2 =>回到活动1

using namespace std;
template <typename T>
class  Vector {
   private:

      // |
      // v
      mutable long _ndx = 0;

      T*    _ptr;                               // storage for T objects
   public:
      Vector() { }

      // The const version
      // |                                 |
      // v                                 v
      T const&  operator[](const long ndx) const { _ndx = ndx; return _ptr[ndx]; }

      // The non-const version
      T&  operator[](const long ndx) { _ndx = ndx; return _ptr[ndx]; }
 };

我得到了:

活动1:

active=true => active=false => active=false 

此活动必须在后台运行。

活动2:

public boolean active = false;

onCreate() {active = true;}

Intent i = new Intent(Activity1.this, Activity2.class);
startActivity(i);

然后我调用方法public boolean active = false; Intent intent = new Intent(Activity2.this, Activity1.class); intent.putExtra("active", active);

但是当我回来时,活动1出现了,我获得了active = true:

onBackPressed();onResume()我在这里:

onRestart()

当我尝试使用时 来自活动1的startActivityforResult()方法它没有移动到活动2,它仍然是真的。

可能是因为我在活动和内容更改方面都有主要布局。 怎么解决这个?

2 个答案:

答案 0 :(得分:0)

This回答可以帮到你。简而言之:您可以使用SharedPreferences保存任何变量,以便以后通过任何活动返回给他们。

SharedPreferences prefs = getSharedPreferences("preference_file_name", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("variable_key", variable);
editor.commit();

此外,即使使用startActivityForResult,您也可以传递一些数据。

答案 1 :(得分:0)

您可以使用共享首选项来存储上述答案中提到的变量,但我们也可以在不使用共享首选项的情况下执行此操作。

  • 创建全局变量有效并将其指定为True。
  • 使用 startActivityforResult ()在Activity 1 =&gt;之间切换活动2
  • on BackPressed (),Activity1中的OnActivityResult将全局变量值更改为false。由于 startActivityforResult ,Activity1处于暂停状态,并且在返回活动1时将调用 onResume ,而不会取代全局变量。