所以我知道大约有100个关于此主题的主题。是的,我尝试阅读它们,但我终生无法理解Android中上下文的概念:(
我想在另一个活动中从“ MainActivity”调用一个非静态方法。
这是我尝试在其他活动中调用非静态方法的地方:
public void removeSelected() {
for(A4Dialogpojo item : selectedItems) {
alCustom.remove(item);
MainActivity.saveCalData(); //This line gives me the compile error
}
这是我要从其他活动调用的MainActivty中的非静态方法:
public void saveCalData(){
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor editor9 = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson( HomeCollection.date_collection_arr);
editor9.putString("task list", json);
editor9.apply();
}
有什么想法吗?在这种情况下,如何使用“上下文”?
答案 0 :(得分:2)
为什么您需要将此方法保留在MainActivity
中?如果是通用工具,只需将其放入某个帮助器类(甚至可以是单例),并在两个Activity
类中都具有一个实例
另一种方法是将“子活动”的值返回到MainActivity
(也考虑使用startActivityForResult
方法)并对此正确调用正确的方法做出反应
据我了解,您不应该在Activity实例上进行操作,因为Activity具有其自己的生命周期,并且是独立处理的
答案 1 :(得分:1)
是的,我尝试阅读它们,但是我一生无法理解Android中上下文的概念:(
编译器错误消息引用的是“上下文”(英语名词),而不是Context
(Android SDK中的Java类)。
我想在另一个活动中从“ MainActivity”调用一个非静态方法。
Android并不真正支持。活动彼此独立。
如果这些活动紧密相连,那么它们应该是一项活动,可能有两个片段。或者,使用一个普通的单例对象作为处理数据存储的存储库,每次活动都与该对象进行通信。
答案 2 :(得分:-2)
不创建类的实例就不能调用非常规方法
new MainActivity().saveCalData();
当然,您必须考虑正确的实例化方法,您可能没有默认的构造函数等,但是它的OOP基础知识对理解很有用