说我正在进行我的主要活动并开始一项新活动
MainActivity > NewActivity
从NewActivity
我按后退键
MainActivity < NewActivity
我希望MainActivity
在NewActivity
关闭后显示,但在MainActivity
正常运行时(例如首次运行应用程序时)不显示。有谁知道这是否可行?
答案 0 :(得分:20)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);
}
@Update。如果您希望在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
}
}
答案 1 :(得分:11)
我尝试使用以下方法通过第一种方法检测活动中操作栏上按下的后退按钮,第二种方法用于检测移动硬件按钮或杀死活动按钮。
@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();
}
答案 2 :(得分:8)
一些想法:
MainActivity
点击NewActivity
时设置一个标记。startActivityForResult
致电MainActivity
并安排NewActivity
设置一个结果,当MainActivity.onActivityResult()
完成时,您将在NewActivity
收到该结果。答案 3 :(得分:7)
您可以在NewActivity中覆盖onBackPressed()方法,该方法将检测何时按下后退按钮。然后为了通知MainActivity,您可以在一个包中发送一个布尔标志,以便MainActivity在NewActivity之后检测到它的打开。
在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中:
Bundle extras = getIntent().getExtras();
boolean fromNewActivity =Boolean.parseBoolean( extras.getString("fromNewActivity"));
现在,您可以检查是否在NewActivity之后打开了MainActivity。
答案 4 :(得分:0)
当您开始NewActivity
时,您需要使用startActivityForResult
并使用有效的requestId
。一旦requestId
完成,此类onActivityResult
将会传回给NewActivity
。