正如标题所示,我的目的是在另一个Activity
“MainActivity
”被重新按下时更新一个Activity
“AddActivity
”上的变量。目前,我可以在MainActivity
上更新变量的唯一方法是当我创建它的新实例时,我不想这样做。我希望更新变量发生在已经实例化的MainActivity
上。代码的一些片段如下:
public class AddActivity extends MainActivity {
....
@Override
public void onBackPressed() {
super.onBackPressed();
updateMain();
}
}
public class MainActivity extends Activity {
....
// This gets executed when the Activity gets created
@Override
protected void onStart() {
super.onStart();
Log.d("tag", "main onstart");
updateMain();
}
protected void updateMain() {
DBAdapter dba = new DBAdapter(this);
dba.open();
....
double cost = dba.getCost();
String costString = String.valueOf(cost);
textView.setText(costString);
dba.close();
}
}
答案 0 :(得分:1)
AddActivity扩展了MainActivity,因此当您在AddActivity中调用updateMain()时,它将调用AddActivity的updateMain而不是MainActivity,因此它将不起作用。
public class AddActivity extends MainActivity {
....
@Override
public void onBackPressed() {
super.onBackPressed();
updateMain();// it is this.updateMain, while 'this' here means a AddActivity instance.
}
}
我认为AddActivity扩展MainActivity不是必须的(也许......)。您可以将数据写入SharePreference,然后从您的MainActivty中读取它。
答案 1 :(得分:0)
感谢@ EricHua23的一点顿悟,我没有需要延长MainActivity
而updateMain()
正在调用AddActivity
' s {{1 }}。所以我做了一个自定义updateMain()
Activity
类,它通过重写RootActivity
将MainActivity
实例存储到变量中,我只是让所有类扩展{{1 }}。这样,我可以通过此变量访问onCreate()
。
答案 2 :(得分:0)
您可以使用AddActivity中的Handler和主要活动onBackpressed通过使用处理程序和在您想要的AddActivity Handler更新变量内部使用Handler更新主活动来添加活动 在Application Class中定义处理程序并生成它的setter和getter方法,并在mainActivity和AddActivity中使用它。