android中怎么关闭父Activity

来源:互联网 发布:淘宝小图标 编辑:程序博客网 时间:2024/04/29 16:00

关闭父Acticity的方法有很多,比较常见的有2种: 

         1  在父Activity中注册广播监听器,在子Activity中发送相应广播

         2  在父Activity中使用startActivityForResult()方法启动子Activity,然后在父Activity中重写onActivityResult方法。


下面看一下这2种方法的实现:


  1  利用广播来实现:


     父Activity 定义注册接收器 :

      

receiver = new MyReceiver();IntentFilter filter = new IntentFilter();filter.addAction("android.intent.action.MY_RECEIVER");//注册监听器registerReceiver(receiver, filter);
  

 接着在父Activity定义匿名内部类MyRecivier

        

/** * 广播接收器,用于销毁Activity * @author honest * */private class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Parent.this.finish();}}


最后别忘了在父Activity销毁时注销监听器:


@Overrideprotected void onDestroy(){//注销监听器unregisterReceiver(receiver);super.onDestroy();}


下面就是在子Activity中发送广播,其实在任何Activity中都可以发送,不仅仅是子Activity

        Intent intent = new Intent();  intent.setAction("android.intent.action.MY_RECEIVER");  this.sendBroadcast(intent);  



 



2 利用startActivityForResult来实现


父Activity:

   //定义了一个按钮,点击按钮后启动子Activity            button.setOnClickListener(new LinearLayout.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(Parent.this,Child.class);SettingTabUi.this.startActivityForResult(intent, 0);}});        @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode==0&&resultCode==-1){finish();}}


子activity:

        Intent intent=Child.this.getIntent();this.setResult(-1, intent);

这样就可以关闭父Activity了。