アンドロイドアプリでクリックイベントを取得

androidアプリで、ボタンのクリックをしてみます。

実装には、まずimplemenetsでOnClickListenerを実装する必要があります。

継承と似た形になりますが、

public class ButtonClick extends Activity implements OnClickListener

と言った形になります。

 

ここで注意が必要ですが、OnClickListenerに関しては

android.view.View.OnClickListener
android.content.DialogInterface.OnClickListener

の2種類がありますが、今回は上のを利用します。

eclipseの補完で両方でてきてしまいますが、上のviewの配下にある方を利用しましょう。

 

上記のOnClickListenerをimplemenetsする事で、クリックされた時のイベントハンドルを設定する必要があります。

名前も決まっていて

public void onClick(View v){}

と言うファンクションを設定します。

 

また、全体のレイアウトに関しては、main.xmlをして構築していきます。

最初にmain.xmlを見ると、TextViewが入っていますが、これは一度削除します。

 

中にLinearLayoutと言うのがあると思いますが、これはオブジェクトを配置するのに

使うので、そのまま利用します。

 

LinearLayoutの中にButtonのファイルを入れます。

【id】に関しては好きな名前で結構ですが、@+id/button01と言う形式で頭に@+id/とつける必要があります。

 

下記のようになります。

//main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
 <Button 
 android:text="Button" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:id="@+id/button01">
 </Button>
</LinearLayout>

と言う形になります。

 

このレイアウトされたものを配置するには下記です。

setContentView(R.layout.main);

 

package in.andante.android.buttonclick;

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

public class ButtonClick extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

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

    //@Override(4~はけす)
    public void onClick(View v){

    }

}

 

で、もしボタンをクリックしたら、ボタンに書いてある文字を変更するようにするには、

btnをpublicでclass配下にpublicでおいて、idでR.idからひっぱってこれるので、

下記のような形になる。

 

package in.andante.android.buttonclick;

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

public class ButtonClick extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    private Button btn;

	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button)findViewById(R.id.button01);
        btn.setText("please,click");
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
    	if(v == btn){
    		btn.setText("thank you");
    	}
    }

}

 

click

※上クリック前、下クリック後

 

12.05.10 追記

コメントで、いただいていたのですが、onClickの前にある@Overrideに関してなんですが、アプリのバージョンを新しいもの(4~)で作ろうとするとエラーを吐きます。

消せばいいのですが、以前だと、eclipseで勝手に付けてきたんですよね。紛らわしくてすいません-

 

fin

  • written on 2011.02.09
  • category : java

前後の記事

前の記事:

次の記事:

関連の記事

コメント

:D 名無し様

onClick(View) はスーパークラスのメソッドをオーバーライドする必要があります
↑こんなエラーが出ました

二つ目の @Override を消したら実行できました。

:D mn

大事な情報サイトなので、@Override の削除修正して下さい。

:D Reikou

@Override があるなら、エラーが出ます。1階ありがとう~

:D 匿名

クリック後の文字にstring.xmlのものを使うことはできますか?

:D seki

クリック後の文字をstring.xmlで定義したものに変える方法はありますか?

:D ptrik

すいません、初心者なのですが
現在アプリを作成していましてOnClickListenerのアプリをエミュレーターで
開こうとするとUnfortunately, (app) has stopped.」エラーが表示されてしまいます。

私の探し不足なのかもしれませんがネットで調べたのですがなかなか原因を探ることができません。
この件で何か知っていたら教えて頂けないでしょうか?

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑