Android - 设置一次变量并在app中随处使用

时间:2014-12-05 05:32:16

标签: java android variables global-variables

基本上我的问题是我想设置让一个字符串给用户在第一个屏幕上选择的A或B.然后保存此字符串变量以用于应用程序中的其他活动。我在Android global variable中看过帖子和很多帖子。

但是变量需要设置并且每个活动都没有保存变量,一次然后可以在任何地方使用?

怎么可以这样做?

我希望我已经解释得这么好,因为我的问题与上面的问题不同。

变量不是最终的,它可以在第一个活动中更改,但后来我想在以下活动中使用它,而不必将其意图传递给每个活动。

感谢您的帮助。

8 个答案:

答案 0 :(得分:4)

您可以将public classstatic String变量一起使用,或者使用Activity方法将变量传递给另一个putExtra

示例:

public class Global {
    public static final String DEVELOPER_KEY;
    public static final String PLAYLIST_ID;
}

答案 1 :(得分:2)

我为同一目的制作了一个课程:

public class Constant {

    public static int NUMBER_OF_TILES;

    public static String setTilesId[] = {};

    public static String TilesDesc[] = {};

    public static String Image[] = {};

    public static String TilesName;

    public static int numberofbox = 0;

    public static boolean isLogedIn = false;

    public static String TilesSize = null;

    public static boolean from_activity = true;

    public static String URL_FOR_PRODUCT_ACTIVITY;

}

现在我可以在我的APP中的任何地方使用这些变量。

答案 2 :(得分:1)

A.java代码:

  package p2;
  public class A{

         public static String abc;

  }

在A类中声明静态字符串后,使用类名称在包中的任何位置使用它,因为它是静态的,因此无论您将其更新为什么值都将保留。

B.java代码:

 package p1;
 public class B{

       public void methodTest(){

                String s = A.abc;    

      }

 }

答案 3 :(得分:1)

您可以将变量放在 SharedPreferences 中。因为它完全符合您的要求。 您可以将变量放在第一个屏幕中,并在应用程序的任何位置使用它。它也不是最终的,您可以随时更改它只会覆盖变量的现有值。

最重要的是,即使申请被关闭,它也会被保留。

因此,每当用户下次启动您的应用程序时,您都可以使用该变量。

答案 4 :(得分:0)

让你的字符串公开静态

例:public static String myvar="hey"//This will be available across all classes

答案 5 :(得分:0)

Instead of using static variable You can simply use Shared Preferences because after some time when your application is in background your static value become free automatically by garbage collector and become null


    public void setString(Context context, String value) {
            SharedPreferences prefs = context.getSharedPreferences("setString",
                    0);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString("getString", value);
            editor.commit();

        }

        public String getString(Context context) {
            SharedPreferences prefs = context.getSharedPreferences("setString",
                    0);
            String value = prefs.getString("getString", null);

            return value;

        }

答案 6 :(得分:0)

您还可以使用SharedPreferences:

SharedPreferences sets =getSharedPreferences(Choose_a_name, 0);
SharedPreferences.Editor editor=sets.edit();
editor.put string("from user", your string);
editor.commit();

在您的其他活动中,您可以再次检索,更改和保存它们。通过这种方式,您可以在活动生命周期内提供用户的自定义数据。即使您的任务被完全杀死,您的数据也会在下次发布时提供。

从其他活动中检索数据:

 SharedPreferences sets = getSharedPreferences(yourPrefName,0);
String your string = sets.get string("from user", default value);

我希望为您提供与意图或静态类相比的其他想法。希望它有所帮助:)

答案 7 :(得分:0)

class SharedPref
{

public void setString(Context context, String value) {
            SharedPreferences prefs = context.getSharedPreferences("setString",
                    0);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString("getString", value);
            editor.commit();

        }

        public String getString(Context context) {
            SharedPreferences prefs = context.getSharedPreferences("setString",
                    0);
            String value = prefs.getString("getString", null);

            return value;

        }
}


and use this class like

SharePref pref=new SharedPref();

pref.setString("Hellooo");


String value=pref.getString();