Tips‎ > ‎Tips‎ > ‎

OnClickSample

画面にボタンを配置して、ボタンが押されたら画面遷移するというだけのサンプルです。

2種類の書き方をしてみました。

ソースコードは下記に置いてありますので、SVN でダウンロードしてください。



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;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // main.xml を設定
        setContentView(R.layout.main);
        
        // main.xml で配置した ボタン(ID:@+id/Button01)を取得
        Button btn = (Button) findViewById(R.id.Button01);
        
        // ボタンにリスナを登録
        btn.setOnClickListener(clickListener);
    }
    
    
    /*
     * クリックリスナ
     */
    private OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
int id = v.getId();
if(id == R.id.Button01) {
// Page2Activity に遷移
goNextActivity();
}
}
};
/*
* Page2Activity に遷移
*/
private void goNextActivity() {
Intent intent = new Intent(getApplicationContext(), Page2Activity.class);
startActivity(intent);
}
}



import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


/*
 * 新しく作ったファイルは
 * Page2Activity.java
 * res/layout/page2.xml
 * 
 * 修正したのは
 * AndroidManifest.xml
 * 
 * onClick を設定できるのは、どのViewでもOK
 * Viewのプロパティで clickable = true にする必要があるものもある
 */

public class Page2Activity extends Activity 
implements OnClickListener {

/** ボタン1クリックメッセージ */
private static final int MSG_ONCLICK_BUTTON_1 = 100;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case MSG_ONCLICK_BUTTON_1:
// ボタン1がクリックされた
String text = "Button1 クリック";
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
// 別の画面に遷移
// Intent intent = new Intent(getApplicationContext(), MainActivity.class);
// startActivity(intent);
// MainActivity から遷移してきているので
// Page2Activityを終了させる
finish();
break;

default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// res/layout/page2.xml を設定
setContentView(R.layout.page2);
Button btn = (Button)findViewById(R.id.Button01);
// MainActivity とは違う方法
// Page2Activity implements OnClickListener と記述
btn.setOnClickListener(this);
}

public void onClick(View v) {
final int id = v.getId(); // ボタンは1個しかないから不要
switch (id) {
case R.id.Button01:
// ボタン1クリックメッセージ
mHandler.sendEmptyMessage(MSG_ONCLICK_BUTTON_1);
break;

default:
break;
}
}
}




Comments