Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android后退按钮关闭应用程序,而不是转到上一个活动_Java_Android_Button_Back - Fatal编程技术网

Java Android后退按钮关闭应用程序,而不是转到上一个活动

Java Android后退按钮关闭应用程序,而不是转到上一个活动,java,android,button,back,Java,Android,Button,Back,我打开我的第一个活动,它只是第二个活动的加载程序,在第二个活动上有按钮,其中一个按钮打开第三个活动。如果我在第三个活动中回击,而不是在第二个活动中回击,则只会关闭应用程序。怎么解决这个问题 以下是一些代码片段: public void onSegmentStatusButtonClick(View view) { Log.d(TAG, "Segment status button clicked."); Intent intent = new Intent(this, S

我打开我的第一个活动,它只是第二个活动的加载程序,在第二个活动上有按钮,其中一个按钮打开第三个活动。如果我在第三个活动中回击,而不是在第二个活动中回击,则只会关闭应用程序。怎么解决这个问题

以下是一些代码片段:

    public void onSegmentStatusButtonClick(View view) {
    Log.d(TAG, "Segment status button clicked.");
    Intent intent = new Intent(this, SegmentStatusActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
    startActivity(intent);
}

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_segment_status);
    TextView txtView = (TextView) this
            .findViewById(R.id.segment_status_msg);
    txtView.setText(new String(getIntent().getByteArrayExtra("data")));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.segment_status, menu);
    return true;
}

@Override
public void onStop() {
    super.onStop();
    Log.d(TAG, "Executing onStop().");
    finish();
}

@Override
public void onPause() {
    super.onPause();
}

@Override
public void onResume() {
    super.onResume();
}

@Override
public void onStart() {
    super.onStart();
}

您正在
onStop()
中调用
finish()
。我怀疑这就是原因
finish()
将指示您已完成该活动,随后将触发调用
onDestroy()
,并将其从后堆栈中删除。删除这些调用将导致反向导航的行为符合您的预期。只有当您不打算返回活动时,活动才应该完成。

您正在
桌面()中调用
finish()
。我怀疑这就是原因
finish()
将指示您已完成该活动,随后将触发调用
onDestroy()
,并将其从后堆栈中删除。删除这些调用将导致反向导航的行为符合您的预期。只有当您不打算返回活动时,活动才应该完成。

为什么在onStop()中调用finish()?为什么在onStop()中调用finish()?谢谢,我对Android开发相当陌生,不知道何时正确调用该方法。谢谢,没问题!是一个很好的参考网站,它有官方的api文档和许多有用的文章和教程来帮助您。在我学习的时候,它是无价的。只要坚持下去,你就会学到很多!谢谢,我是Android开发的新手,不知道什么时候该正确调用这个方法。谢谢,没问题!是一个很好的参考网站,它有官方的api文档和许多有用的文章和教程来帮助您。在我学习的时候,它是无价的。只要坚持下去,你就会学到很多!