有兩種方式可以使按鈕起作用,View.OnClickListener 和 XML layout,其中View.OnClickListener有三種方法
※一、View.OnClickListener
※activity_main.xml
<Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test button"/>
※View.OnClickListener的三種方法都是用這個xml
※1.MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_button); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new MyOnClickListener()); } private class MyOnClickListener implements View.OnClickListener{ @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "extends Listener button", Toast.LENGTH_SHORT).show(); } } }
※寫一支class繼承View.OnClickListener,然後實作onClick方法
※2.MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_button); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Toast.makeText(getApplicationContext(), "Listener button", Toast.LENGTH_SHORT).show(); } }); } }
※和第一種方法一樣,只是變成匿名類別
※3.MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_button); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(this); } @Override public void onClick(View view) { Toast.makeText(getApplicationContext(), "class Listener button", Toast.LENGTH_SHORT).show(); } }
※不寫class繼承View.OnClickListener,直接繼承View.OnClickListener,一樣實作onClick方法
※二、XML layout
這種方式是用設定的方式來達成,較常用※activity_main.xml
<Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test button" android:onClick="xxx"/>
※xxx是要實限的方法名稱,當然也可以叫onClick
※MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_button); } public void xxx(View view) { Button btn = (Button) view; String[] display = {"別按我", "按屁啊", "按一次五元", "誰叫你亂按的", "林老師咧"}; btn.setText(display[(int) (Math.random() * display.length)]); Toast.makeText(getApplicationContext(), "setting button", Toast.LENGTH_SHORT).show(); } }
※官網有說要public,而且要有View參數,表示自己的這一個按鈕
沒有留言:
張貼留言