2013-03-14 40 views
1

我疯了试图弄清楚如何在某处存储变量,所以当我切换到另一个活动时,然后又回到变量仍然包含此值。我前一段时间使用共享首选项,但这是一个不好的解决方案,这是比我需要的更永久,而不是正确的方式。什么是存储变量的正确方法,以便在活动更改时保留此值?

如果在活动一中按下了某个按钮,这将通过一个意图打开活动二,并将值设置为活动二中的一个字符串。当转到另一个活动时,或者按下后退按钮,然后返回到活动二时,该字符串将重置为其初始值。

我曾尝试:

共享偏好(工作,但不太好) 静态变量(好像没任何区别,也许我做错了什么) 使用保存实例状态和恢复像这样状态的方法:

@Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putString(destination, des); 
     super.onSaveInstanceState(savedInstanceState); 
    } 


@Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     des = savedInstanceState.getString(destination); 
    } 

我在哪里,我承认我不知道如何做到这一点,并Frankensteining代码一起导致我比什么都重要的问题,但到目前为止,在地平线上没有叉子。

为了在活动之间保存一个字符串内的值,你有什么经验的程序员推荐?

+1

我不知道为什么人们有时候这么快就会失望。非常刺激。对于未来的下台者,如果我们在人们展示真实努力时这样做,那么我们将失去该网站,因为人们会害怕寻求帮助。在那里,这是我每天2分钱:P – codeMagic 2013-03-14 02:18:07

+0

感谢codeMagic,我不得不说,有很多时候我写了一个问题,然后删除它,因为没有什么比downvote更糟,特别是当你在阶段你需要寻求帮助的地方。 – deucalion0 2013-03-14 09:48:33

回答

3

可以使用Intent

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
intent.putExtra("key", value); // where key is whatever you want to name it 
           //and will be used to retrieve it in the next 
           //activity and value is the actual value of your string 
startActivity(intent); 

然后在你的第二个活动

Intent curIntent = getIntent(); 
String variableName = curIntent.getStringExtra("key"); 

Intents

+0

我知道这会传递一个值给我的字符串变量,当我离开活动时,它会保留在那里。但是你的代码是一种更好的方式来传递一个值,而不是我这样做的方式! :) – deucalion0 2013-03-14 00:27:45

+1

我很高兴你发现它有帮助。我们确实有一个带有静态变量的“Globals”类,但我不喜欢使用这个比我更多的东西。其实试图清理它 – codeMagic 2013-03-14 00:29:33

+0

codeMagic,我想问你,你是一个开发人员,可能有兴趣帮助我解决我的Android应用程序的一个小问题作为一项工作吗?这项工作可能需要10分钟才能完成,3周内我无法完成。 :)我的电子邮件是[email protected] – deucalion0 2013-03-14 21:49:12

1

另一种选择获得的价值是从一个新的扩展活动只是把它作为一个extra类,称为SuperActivity。然后,在每个后续活动类中,扩展SuperActivity类。在SuperActivity类中放置您希望全局访问的项目。

请记住,这将构建SuperActivity类与每个新的活动 - 所以动态变量将需要初始化。但是,静态变量将从实施到实施。

对于它的价值,我不会用它来通过意图替换传递的数据。通过这样做,每个活动都包含SuperActivity中包含的每个变量。因此,除非所有(或几乎所有)活动都需要变量,否则最好通过意图传递它。

+0

感谢您的建议Tim C! ! – deucalion0 2013-03-14 09:49:34

相关问题