在所有活动中使用的全局变量声明

10

我正在创建一个自定义类在主应用程序类中。假设我的mainAccount

现在,我正在创建许多活动。我想在每个活动中使用mainAccount变量,有什么方法可以做到这一点吗?一种方法是将其放入意图并传递到每个活动。是否有更好的方法,例如使其全局等?

最好的问候

4个回答

9

查找单例类。基本上,您需要像这样的东西。

public class Singleton {
   private static Singleton instance = null;
   protected Singleton() {
      // Exists only to defeat instantiation.
   }
   public static Singleton getInstance() {
      if(instance == null) {
         instance = new Singleton();
      }
      return instance;
   }
}

然后,对于需要访问该类的任何类,请调用:

Singleton var=Singleton.getInstance();

这实际上是全局的,但没有大多数全局变量的负面影响。它将确保该类只能存在一个对象,但需要它的每个人都可以访问它。


7

没问题。那个第一个链接还有很多其他有用的信息。 - mpeerman
不要使用应用程序上下文来保存变量,因为它没有 onSaveInstanceState 方法,当应用程序从内存中被移除并重新创建时,变量将会丢失。 - benleung

5

只需定义一个抽象类,包含你想在活动中访问的变量和方法。

例如:

public abstract class BaseActivity extends Activity
{
  //static variables
  // static methods
}

现在在您所有的活动中扩展此BaseActivity类:
public class HelloAndroid extends BaseActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

3
你可以使用“单例”类或“静态”类(如果你不需要初始化、实例化或继承或实现接口)。
单例类:
   public class MySingletonClass {

        private static MySingletonClass instance;

        public static MySingletonClass getInstance() {
            if (instance == null)
                instance = new MySingletonClass();
            return instance;
        }

        private MySingletonClass() {
        }

        private String val;

        public String getValue() {
            return val;
        }

        public void setValue(String value) {
            this.val = value;
        }
    }

String s = MySingletonClass.getInstance().getValue();

静态类:

public  class MyStaticClass {
    public static String value;
}

字符串 s = MyStaticClass.value;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接