Java 在另一个活动上调用OnBackpress时Android更新活动
正如标题所示,我的目标是在一个Java 在另一个活动上调用OnBackpress时Android更新活动,java,android,android-activity,Java,Android,Android Activity,正如标题所示,我的目标是在一个活动“main活动”上更新一些变量,而另一个活动“AddActivity”被反按。目前,在MainActivity上更新变量的唯一方法是创建它的新实例,我不想这样做。我希望变量的更新发生在已实例化的MainActivity上。下面是一些代码片段: public class AddActivity extends MainActivity { .... @Override public void onBackPressed() {
活动
“main活动
”上更新一些变量,而另一个活动
“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();
}
}
AddActivity扩展了MainActivity,因此当您在AddActivity中调用updateMain()时,它将调用AddActivity的updateMain,而不是MainActivity的updateMain,因此它不会生效
public class AddActivity extends MainActivity {
....
@Override
public void onBackPressed() {
super.onBackPressed();
updateMain();// it is this.updateMain, while 'this' here means a AddActivity instance.
}
}
我认为AddActivity扩展main活动不是必须的(可能…)。您可以将数据写入SharePreference,然后从MainActivty读取数据 多亏了@EricHua23,我才有了一点顿悟,我不需要扩展
MainActivity
,而updateMain()
正在调用AddActivity
的updateMain()
。因此,我做的是创建一个自定义的Activity
RootActivity
类,通过重写onCreate()
将MainActivity
实例存储到一个变量中,我只需使所有类扩展RootActivity
。通过这种方式,我可以通过此变量访问MainActivity
。您可以在AddActivity内使用处理程序从AddActivity更新主活动,并在主活动上使用返回时使用处理程序和所需的AddActivity处理程序更新变量内发送空消息,
在应用程序类中定义处理程序,并将其设置为setter和getter方法,并在mainActivity和AddActivity中使用它。您的logcat是否有任何错误或问题是什么?我将再次模拟它并观察logcat。logcat没有显示任何异常。您确定这是必要的吗?您可能需要更新onResume方法中的活动。或者您可能想使用。它将为您处理更新UI。尝试了onResume(),但没有工作。好的,我将测试MainActivity是否有必要(由团队成员进行设计决策)。我很快就要报告了。