Android點擊事件的幾種實現方式
-
在每次使用時新實現一個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>
讓這個頁面類實現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>
多組合少繼承的原則,把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>
把類中的點擊事件看作是一個對象,新建一個類來實現這些事件
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>
在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