Buttonはイベント!っていうVBゆとりまるだしです
Androidではリスナーを登録っていうらしいですね へぇ~
使い方はまずレイアウトでButtonを追加します
main.xmlを開いて
<Button android:text="@+id/satellite"
android:id="@+id/satellite"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
こんな感じで追記する
satelliteってのは自分でわかるように名づけて
あるいはGUIでButtonを配置する
こんな感じで
赤い囲いのところを押せば上みたいな画面になるよ
あとはActivityの編集でイベント(っていっちゃだめか)を書きます
まずはOnClickListenerをActivityに内包します(たぶん意味違う)
とりあえずおきまりということでActivityのとこをこうします
public class MapView_Activity extends MapActivity implements OnClickListener
MapView_Acitivityってのは自分が新しく作ったActivity
MapActivityを継承しています
そしてその横のimplements OnClickListenerってのをつけます
そうすると
View.OnClickListener.onClick(View) を実装する必要があります っていわれます
なんでこのonClickをクラス内に実装します
public void onClick(View v)
{
//ここに処理
}
これでひとまずok
次はmain.xmlでレイアウトしたButtonから処理が始まるようにする
こんな感じ
buttonSatellite = (Button)findViewById(R.id.satellite);
buttonSatellite.setOnClickListener(this);
buttonSatelliteってのはこのクラスのメンバ変数です
レイアウトしたButtonのID(ここではsatellite)をButtonビューに割り当てるかんじでしょうか イメージ的に
そして先ほど実装したonClickに処理を書き込んできます
自分はこんな感じです
public void onClick(View v)
{
if( v == buttonSatellite )
{
if( m.isSatellite() )
{
buttonSatellite.setText("Satellite On");
m.setSatellite(false);
}
else
{
buttonSatellite.setText("Satellite Off");
m.setSatellite(true);
}
}
}
引数のvに定義したButtonビューが入る
それをif分で分岐して、処理を入れ込んでく
ボタンを追加したらelseifとかswitchで処理を追加できそうですね
結果、ちゃんとボタンのイベントが発生させられましたー
VBみたいにダブルクリックでちょいちょいでおわりませんね
Satellite Onボタンを押すと
うん
すばらしい
むだなところあるけど以下がそれ
package mudai.co.jp;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.view.View.OnClickListener;
public class MapView_Activity extends MapActivity implements OnClickListener
{
// private final int FP = ViewGroup.LayoutParams.FILL_PARENT;
// private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
private MapView m;
private Button buttonSatellite;
@Override public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
m = (MapView)findViewById(R.id.mapview);
buttonSatellite = (Button)findViewById(R.id.satellite);
buttonSatellite.setOnClickListener(this);
}
private LinearLayout.LayoutParams createParam(int w, int h)
{
return new LinearLayout.LayoutParams(w, h);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
public void onClick(View v)
{
if( v == buttonSatellite )
{
if( m.isSatellite() )
{
buttonSatellite.setText("Satellite On");
m.setSatellite(false);
}
else
{
buttonSatellite.setText("Satellite Off");
m.setSatellite(true);
}
}
}
}









