Android點擊事件的幾種實現方式

sc4003 8年前發布 | 7K 次閱讀 安卓開發 Android開發 移動開發

  1. 在每次使用時新實現一個OnClickListener接口

    public class MainActivity extends Activity {
     private Button btn;

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btnDoSomething); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { doSomething(v); } }); }

    public void doSomething(View view) { /do something here/ } }</code></pre> </li>

  2. 讓這個頁面類實現OnClickListener接口

    public class MainActivity extends Activity implements View.OnClickListener{
     private Button btn;

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btnDoSomething); btn.setOnClickListener(this); }

    @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnDoSomething: doSomething(v); break; default: break; } }

    public void doSomething(View view) { /do something here/ } }</code></pre> </li>

  3. 多組合少繼承的原則,把OnClickListener接口作為一個屬性放到頁面類中

    public class MainActivity extends Activity{
     private Button btn;
     private View.OnClickListener clickListener;

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

     clickListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             doSomething(v);
         }
     };
     btn = (Button) findViewById(R.id.btnDoSomething);
     btn.setOnClickListener(clickListener);
    

    }

    public void doSomething(View view) { /do something here/ } }</code></pre> </li>

  4. 把類中的點擊事件看作是一個對象,新建一個類來實現這些事件

    public class ClickListener implements View.OnClickListener{

    @Override public void onClick(View v) { doSomething(v); }

    private void doSomething(View view) { /do something here/ } }</code></pre>

    在使用的時候,新建或者組合使用

    public class MainActivity extends Activity{
     private Button btn;
     private ClickListener clickListener =  new ClickListener();

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

     btn = (Button) findViewById(R.id.btnDoSomething);
     btn.setOnClickListener(clickListener);
    

    } }</code></pre> </li>

  5. 在java類中定義好點擊事件要執行的方法,在布局文件xml中調用

    activity_main.xml

    <LinearLayout xmlns:android="
    

    <Button android:id="@+id/btnDoSomething" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="share" android:onClick="doSomething"/><!-- 這句是關鍵,點擊時執行MainActivity中的doSomething方法 --> </LinearLayout></code></pre>

    MainActivity .java

    public class MainActivity extends Activity{

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }

    public void doSomething(View view) { //方法必須定義為public /do something here/ } }</code></pre> </li> </ol>

    個人理解就上面幾種實現方式了~

    推薦使用 第三、四種 方式,其他方式不推薦

     

    來自:http://www.jianshu.com/p/926f4f6c1d74

     

 本文由用戶 sc4003 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!