我的应用中有两项活动。我想执行一个简单的功能。在第二个活动中,如果点击了按钮,则应隐藏并返回第一个活动如果我点击第一个活动中的第二个活动按钮应该用隐藏按钮打开。我通过以下代码实现了这个目标。
但问题是。当我在第一个活动中按下按钮时,我无法关闭(调用 onDestroy())应用程序。后退按钮在两个活动之间切换。
First Activity Java:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class first extends AppCompatActivity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(first.this, second.class);
startActivity(intent);
}
});
}
public void onBackPressed() {
super.onBackPressed();
}
}
第二个活动Java:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class second extends AppCompatActivity {
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
onBackPressed();
btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn2.setVisibility(View.GONE);
Intent intent = new Intent(second.this, first.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
});
}
public void onBackPressed() {
intent = new Intent(second.this, first.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
}
如何在此条件下调用 OnDestroy()?
答案 0 :(得分:0)
原因是您在第二个活动中覆盖onBackPressed()。这意味着每次按下第二个活动的后退按钮时,它都会创建一个新的第一个活动,而不是返回旧活动。该应用程序将停留在此循环中。尝试在第二个活动中删除onBackPressed方法或在其中调用finish()。
答案 1 :(得分:0)
从后退事件中调用finish()
。覆盖反向事件,以便您可以自定义它。
@Override
public void onBackPressed() {
finish();
//super.onBackPressed();
}
}
答案 2 :(得分:0)
您可以在第一个活动中使用此onBackPress()
方法
@Override
public void onBackPressed() {
//super.onBackPressed();
finish();
}
OR
您可以删除onBackPress()
,因为您不必覆盖它。