Listen? listen!

来源:互联网 发布:台州淘宝司法拍卖网 编辑:程序博客网 时间:2024/05/16 08:51

一、 你所熟悉的Listener

  兩個Activity之間,或者Activity與Service之間,如果它們是在同一個進程(Process)裡,則設計Listener來進行溝通是個好方法。就像Activity與Button之間,也常常使用指令:

public class myActivity extends Activity {

      public void onCreate(Bundle icicle) {

                   ………….

           Button btn1 = new Button(this);

                    …………

                    btn1.setOnClickListener(listener);

                  

                 }(www.whtarena.com.cn)

           OnClickListener listener = new OnClickListener() {

                      ………

                 };

}

  這個Listener可以讓Button能將資料傳給Activity。

  同樣地,我們也可以將這個技巧,應用於兩個Activity之間,或者Activity與Service之間的溝通。

  二、範例程式:兩個Activity間之溝通

  先執行ac01:

  

  按下<Go SubActivity>,就執行EventActivity:

  

  輸入資料如:Happy NewYeara!!,並按下<Send Event!>,返回到ac01:

  

  就看到所傳來的字串了。其程式碼為:

/*    aco1.java   */

package com.misoo.ppxx;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

 

public class ac01 extends Activity{

               private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;

               private Button btn, btn2;

               @Override

               public void onCreate(Bundle icicle) {

                   super.onCreate(icicle);

                   LinearLayout layout = new LinearLayout(this);

                   layout.setOrientation(LinearLayout.VERTICAL);

                   LinearLayout.LayoutParams param =

                          new LinearLayout.LayoutParams(100, WC);

            param.topMargin = 5;

           

                   btn = new Button(this);

                   btn.setText("Go SubActivity");

                   btn.setOnClickListener(listener);

            layout.addView(btn, param);                               

                  

                   btn2 = new Button(this);

                   btn2.setText("Exit");

                   btn2.setOnClickListener(listener);

                  

                   layout.addView(btn2, param);

                   this.setContentView(layout);

                   EventActivity.setUpdateListener(new UpdateUIListener());

                  

                 }

             OnClickListener listener = new OnClickListener(){

                               public void onClick(View v) {

                                         if(v == btn){

                                         Intent in = new Intent(ac01.this, EventActivity.class);

                                         startActivity(in);

                                                   

                                         }

                                         else if(v == btn2){

                            finish();

                            }

                               }

                     };

            class UpdateUIListener implements IListener {

                  public void update(String s) {

                     setTitle(s);

                    }

                }

  }

 

/*    EventActivity.java   */

package com.misoo.ppxx;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

 

public class EventActivity extends Activity implements OnClickListener {

           private static IListener plis;

           private EditText et;

           private Button btn;

          

           public static void setUpdateListener(IListener listener) {

                       plis = listener;

           }

 

           @Override

           public void onCreate(Bundle icicle) {

                     super.onCreate(icicle);

                     setContentView(R.layout.event);

                     et=(EditText)findViewById(R.id.et);

                    

                     btn = (Button)findViewById(R.id.send);

                     btn.setBackgroundResource(R.drawable.x_yellow);

                     btn.setOnClickListener(this);

           }

 

           public void onClick(View v) {

        plis.update(et.getText().toString());

                    finish();

           }

}

 

原创粉丝点击