Android:getApplicationContext() 在 View 子类中不起作用

标签 android android-view android-context

所以我创建了一个 DrawView 类,它扩展了 View,我想在该类中绘制一些图形,并将我存储为 int 数组的点 在 How to declare global variables 的帮助下,我把这个数组变成了一种公共(public)变量 因此,当我想在 Activity 中连接 MyApp 并更改我的数组时,我只需使用

MyApp appState = ((MyApp)getApplicationContext());

但问题是,当我在我的 DrawView.java 类中调用它时,这将不起作用。 任何ides如何解决这个问题?

最佳答案

我真的不知道为什么这个答案如此受欢迎,因为它不是一个好的解决方案。 Application 对象是运行应用程序,而不是存储数据,你可以用一个简单的 Singleton 对象更容易地解决这个问题,试试这个:

    public Class MyData{

        private int[] data;
        private static MyData me;

        public int[] getData(){
           return data;
        }

        private MyData(){} // private constructor

        public MyData get() {}
            if(me==null) me = new MyData();
            return me;
        }
    }

比任何你可以调用的对象:

    int[] data = MyData.get().getData()

并且可以随意扩展到不仅仅是一个 int[] ... 放置您希望全局可访问的任何其他对象。但请记住,不要保留对上下文的引用!

关于Android:getApplicationContext() 在 View 子类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824293/

相关文章:

android - 如何在android中显示所有消息选项的对话框?

android - getContext() 、 getApplicationContext() 、 getBaseContext() 和 "this"之间的区别

android - 为什么 Android 应用内更新总是返回 UPDATE_NOT_AVAILABLE 并且版本代码为 0?

Android Studio 问题 - 文件过早结束

android - 如何在 Android 上为 cmake 启用剥离

java - MPAndroidChart 条形图 - 如何在组之间以随机 x 轴间隔对条形进行分组?

android - 在 WebView 中处理屏幕旋转

android - 更改 LayoutParams 后,RelativeLayout 中的按钮消失

Android - 在静态内部 Activity 类中制作 toast 或对话

java - 如何在 oncreate 之外使用 SharedPreferences?