Java 检查android中是否按下了后退键?
假设我正在进行我的主要活动,我开始了一项新的活动Java 检查android中是否按下了后退键?,java,android,back-button,Java,Android,Back Button,假设我正在进行我的主要活动,我开始了一项新的活动 MainActivity > NewActivity 然后从NewActivityI按下后退键 MainActivity < NewActivity MainActivity
MainActivity > NewActivity
然后从NewActivity
I按下后退键
MainActivity < NewActivity
MainActivity
如果在关闭
NewActivity
后显示MainActivity
,但不是在正常运行MainActivity
时(例如首次运行应用程序时),我希望MainActivity
执行某些操作。有人知道这是否可行吗?当您启动NewActivity
时,您需要使用startActivityForResult
并使用有效的requestId
。NewActivity
完成后,此类requestId
将被传递回您的onActivityResult
。一些想法:
- 当
启动时,您只需在NewActivity
中设置一个标志即可MainActivity
- 您可以从
调用MainActivity
,并安排startActivityForResult
设置结果,当NewActivity
完成时,您将在NewActivity
MainActivity.onActivityResult()中收到该结果
@覆盖
公共布尔onKeyDown(int-keyCode,KeyEvent事件){
if((keyCode==KeyEvent.keyCode\u BACK)){
Log.d(this.getClass().getName(),“按下后退按钮”);
}
返回super.onKeyDown(keyCode,event);
}
@更新。如果您希望在NewActivity完成时收到通知,则必须通过startActivityForResult(Intent,requestCode)启动它。然后,必须在MainActivity上重写onActivityResult()。检查此处的requestcode参数,如果返回代码等于提交代码(当您开始childActivity时),请输入一些代码来完成您的业务
int MYCODE=1000;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Result OK.d.
if (requestCode == MYCODE) {
// do something good
}
}
您可以在NewActivity中重写onBackPressed()方法,该方法将在按下后退按钮时检测。然后,为了通知MainActivity,您可以在bundle中发送一个布尔标志,以便MainActivity在NewActivity之后检测其打开 在新活动中:
@Override
public void onBackPressed() {
boolean fromNewActivity=true;
Intent mainIntent = new Intent(view.getContext(), MainActivity.class);
Bundle bundleObj = new Bundle();
bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity));
mainIntent.putExtras(bundleObj);
startActivityForResult(mainIntent, 0);
}
在onCreate()方法中的MainActivity中:
现在,您可以检查MainActivity是否在NewActivity之后打开。我尝试以下方法来检测第一种方法在activity中操作栏上按下的back按钮,第二种方法用于检测移动硬件按钮back或kill activity按钮
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}
如果按下“后退”按钮,这不就是在听吗?如果您只想听“后退”按钮,请使用第一个剪断的代码。如果您按下“后退”按钮并且软键盘可见,则不会调用onKeyDown。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}