>我有一个由 3 个活动组成的应用程序
- 主活动
- 计算器活动
- 信息活动
我的主活动有一个确认按钮,点击启动计算器活动,一切都正确完成并按预期工作。
CalculatorActivity 有 2 个按钮,一个是检查某些内容并显示消息的 calculateButton 和一个启动 InformationActivity 的 learnMore按钮。
当我在计算器第一次活动一切都很好,可以正常工作。按下学习更多按钮将我导航到信息活动。该活动如下所示:
信息活动:
goBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchActivity();
}
});
}
public void switchActivity(){
final Intent intentObj = new Intent(this,CalculatorActivity.class);
startActivity(intentObj);
}
一个goBack按钮,让我回到计算器活动。返回似乎会破坏功能。尽管布局在那里并且一切看起来都像它应该的那样,但按下按钮(计算按钮,学习更多按钮)什么也不做。
计算器活动 :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
final Button calculateButton = (Button) findViewById(R.id.calculateId);
final Button learnMoreButton = (Button) findViewById(R.id.learnMoreButtonId);
还有一些TextView和EditText没有显示在这里,但你明白了。还有一些方法可以进行计算,getters和setter。
此方法 public void switchActivity(){
final Intent intentObj = new Intent(this,Information_activity.class);
startActivity(intentObj);
}
但是我没有使用 onResume() 、onPause() 或生命周期中除 onCreate() 之外的任何方法。
从我所做的一些搜索中,我发现我在管理活动生命周期的方式上做错了,但我仍然找不到解决方案。开发文档对我没有太大帮助,而且与我的问题相同的帖子很旧。
我的问题是,应该如何完成从InformationActivity到CalculatorActivity的导航,以便当CalculatorActivity回来与用户交互时,功能不会中断。应该在 Resume() 上调用哪个方法?, onRestart()?它应该是什么样子的?
感谢任何愿意帮助的人。
PS:正如我所提到的,我已经阅读了活动生命周期的文档,但我还没有找到解决方案。
而不是每次都开始新活动,而是完成信息活动。
goBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
您正在创建太多以这种方式来回移动的活动。 您可以使用 finish() 销毁活动;也可以使用 onBackPressed() 返回以前的活动;
goBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
试试这个
goBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InformationActivity.this.finish();
}
});
}
您无需说要返回哪里,只需完成活动,它就会自动将您切换到上一个活动。
我认为您的活动是分层的,因此您应该能够从主要计算器活动中执行以下操作:
Intent i = new Intent(this, InformationActivity.class);
startActivityForResult(i);
您的后退按钮添加以下代码:
goBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResult(Result.OK);
finish();
}
});
你们都在建议同样的事情。添加
Information_Activity.this.finish()
修复了损坏的功能,虽然你们都是对的,但我只能选择一个答案。
谢谢