Androidでボタンを配置し入力をとる
Androidプログラミングの勉強にようやく進展がありましたのでご報告。
やっとボタンを配置できました(笑)
配置するのは簡単でしたがボタンイベントをとるのは大変でした。
一応メモ
見かけのボタンを配置
まずは配置したいActivityのxmlを開きPaletteからButtonを選び、配置したいところにドラッグアンドドロップする。
その段階のxmlはこんな感じ。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
ボタンのxmlに対応するメソッドの情報を追記する
今回は対応する処理を書くメソッドをonClickという名前にした。
先ほどのxmlのbuttonのところに
android:onClick="onClick"
を追加する。
追加した結果。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="onClick" /> </RelativeLayout>
Javaで処理を書く
あとは対応するActivityのJavaファイルに処理を書いていきます。
今回はメインのメソッド(MainActivity)の中に直書きしました。
処理を書く前にメインのメソッド(今回はMainActivity)にちょっと変更。
public class MainActivity extends Activity
のところを
public class MainActivity extends Activity implements View.OnClickListener
に変更。
クリックリスナーを実装しますよということだと思います。(JavaでGUIのプログラムを作ったのが数年前なのであんまり自身がないですが。)
そしてそのメソッドの中に
public void onClick(View view){ switch (view.getId()){ case R.id.button: Toast.makeText(MainActivity.this,"ボタンが押されました",Toast.LENGTH_LONG).show(); break; } }
を追加しました。
これが処理の本体ですね。
view.getId()でIDをみて、処理を切り替えています。
IDがbuttonだったら「ボタンが押されました」と表示されるようにしています。
というわけでMainActivity.javaの最終形がこちら
//デフォルトで設定されているもの //import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; //デフォルト以外で追加したもの import android.app.Activity; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onClick(View view){ switch (view.getId()){ case R.id.button1: Toast.makeText(MainActivity.this,"ボタンが押されました",Toast.LENGTH_LONG).show(); break; } } }
というわけでボタンのイベントが取れました。
ここまで来るのに数日かかってしまいました(笑)
ここからはボタンとかを移動させる方法を調べていこうと思います。
では、また!