finishActivity()可能的用例是什么?

时间:2014-02-26 05:42:11

标签: android android-layout android-intent android-fragments

正如我已经了解的Finish() and FinishActivity()。即

finish()在您的活动完成后调用此选项并应关闭。

finishActivity()用于完成您之前使用startActivityForResult(Intent, int);

开始的其他活动

我想通过示例代码简要介绍一下这个问题。了解它的工作原理。

1 个答案:

答案 0 :(得分:14)

finish()在您的活动完成后调用此选项并应关闭。 ActivityResult会传播回通过onActivityResult()启动你的人。

finishActivity(int requestCode)用于完成您之前使用startActivityForResult(Intent,int)开始的另一项活动;

修改

就像你只是写finish();一样,它只会完成您当前的活动,但是当您使用finishActivity(1001)时,1001是您从startActivityForResult(intent, 1001);传递的请求代码{1}}所以它将完成你来自的活动

实施例

@Override 
        public boolean onKeyDown(int keyCode, KeyEvent event) { 
                // TODO Auto-generated method stub 
                if (keyCode == KeyEvent.KEYCODE_BACK) { 
                        finish(); 
                        finishActivity(107); 
                        Intent intent = new Intent(this, Menu.class); 
                        startActivity(inten); 
                        return true; 
                } 
                return false; 
        } 

因此,上面的示例将按照您编写的finish();完成当前活动,并按照我们编写的finishActivity(107);完成您之前的活动,我已经告诉您107是代码你从其他活动中过去了。

假设您有2个活动(活动A和活动B),主活动A是启动活动。活动B将在活动B之上运行,并且是模糊视图。当你重定向到活动B时,你没有完成活动A.你正在开始这样的活动B

startActivityForResult(intent, 107); 

所以在活动B中你有

@Override 
            public boolean onKeyDown(int keyCode, KeyEvent event) { 
                    // TODO Auto-generated method stub 
                    if (keyCode == KeyEvent.KEYCODE_BACK) { 
                            finish(); 
                            finishActivity(107); 
                            Intent intent = new Intent(this, Menu.class); 
                            startActivity(inten); 
                            return true; 
                    } 
                    return false; 
            } 

将完成您的活动A和B.

希望这很简单明了。