English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
具体的な実装コード:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // メソッド1.OnClickListenerインターフェースを実装したクラスを使用 ((Button) findViewById(R.id.btn1) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ButtonActivity1); startActivity(intent); } }); // メソッド2.匿名内部クラスを使用 ((Button) findViewById(R.id.btn2) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ButtonActivity2); startActivity(intent); } }); // メソッド3.ActivityがOnClickListenerインターフェースを実装 ((Button) findViewById(R.id.btn3) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ButtonActivity3); MainActivity.this.startActivity(intent); } }); // メソッド4.タグで直接トリガーイベントを指定 ((Button) findViewById(R.id.btn4) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ButtonActivity4); MainActivity.this.startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // メニューをインフレートします;アクションバーが存在する場合は、アイテムがアクションバーに追加されます。 getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // ここでアクションバーのアイテムクリックを処理します。アクションバーが存在する場合は、アイテムがアクションバーに追加されます。 // Homeボタン上でのクリックを自動的に処理します。/Upボタン、長押し // AndroidManifest.xmlに親アクティビティを指定するように指定されています。 int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }
上記のコードでは:
1MainActivityクラスはActivityを継承する必要があります。
2、onCreateメソッドをオーバーライドし、setContentViewメソッドを使用して相应的layout(レイアウト)ファイルをロードする必要があります。
3、findViewByIdメソッドを使用して、layoutレイアウトファイルで定義されたコントロールを見つけ、クリックイベントをバインドします(Javaではリスナー、C#ではデリゲートを使用します)。
4、Intentオブジェクトを通じてデータを渡し、他のActivityに遷移することができます。
5、onCreateOptionsMenuおよびonOptionsItemSelectedは、メニュー項目を追加または選択したときのメソッドです。
以下は、それぞれの4つのActivityの内容です:
第1種:
public class ButtonActivity1 extends Activity { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_button1); button = (Button) findViewById(R.id.btn1); button.setOnClickListener(new MyListener()); } public class MyListener implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(ButtonActivity1.this, "これはイベントの第1種の書き方で、内部クラスでイベントを定義する方法です", 2000).show(); } } }
第2種:
public class ButtonActivity2 extends Activity { Button button ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_button2); button = (Button)findViewById(R.id.btn1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(ButtonActivity2.this, "これはイベントの第2種の書き方で、匿名内部クラスの形式です", 2000).show(); } }); } }
第3種:
public class ButtonActivity3 extends Activity implements OnClickListener { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_button3); button= (Button)findViewById(R.id.btn1); button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1: Toast.makeText(ButtonActivity3.this, "これはイベントの第3種の書き方で、OnClickListenerインターフェースのOnClickメソッドを実装する直接の方法です", 2000).show(); break; default: Toast.makeText(ButtonActivity3.this, "トリガーされませんでした", 2000).show(); break; } } }
第4種:
layoutレイアウトファイルxmlでbtnClickEventメソッドを指定する必要があります。
<LinearLayout 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:orientation="vertical" tools:context="com.example.test.Button"4Activity" > <Button android:id="@"+id/btn4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="クリックして" android:onClick="btnClickEvent"/> </LinearLayout> public class ButtonActivity4 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_button4); } public void btnClickEvent(View v){ Toast.makeText(ButtonActivity4.this, "これはイベントの第4種の書き方で、レイアウトファイルのButtonタグに直接Clickイベントをバインドする", 2000).show(); } }
上記の4この書き方の3この方法は少し多用されています。アクティビティ内に複数のボタンがclickイベントをトリガーする場合、以下の3この書き方がボタンのイベントコードの管理とメンテナンスが容易です。
レイアウトは非常に重要な内容であり、以下のブログで詳しく説明しますが、ここでは簡単に触れます。
私たちはLinearLayout(線形レイアウト、他にはレlativelayout、absolutelayoutなどがあります)を使用し、Android:orientation属性の値をvertical(垂直)に設定して、上から下に向かって順にコントロールを表示します。
その他3個のレイアウトファイルがこの内容と同じで、すべてボタンを配置しているだけです。
activity_main.xmlの設定は以下の通りです(単純に配置した4個ボタン):
<LinearLayout 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:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.test.MainActivity" > <Button android:id="@"+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/clickMe1" /> <Button android:id="@"+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/clickMe2" /> <Button android:id="@"+id/btn3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/clickMe3" /> <Button android:id="@"+id/btn4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/clickMe4" android:onClick="btnClickEvent"/> </LinearLayout>
最も重要なステップは、AndroidManifest.xmlファイルでActivityの登録を設定することです。以下は完全な設定例です:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ButtonActivity1" android:label="@string/button1" /> <activity android:name=".ButtonActivity2" android:label="@string/button2" /> <activity android:name=".ButtonActivity3" android:label="@string/button3" /> <activity android:name=".ButtonActivity4" android:label="@string/button4" /> </application> </manifest>
ここには注意すべきポイントがあります。
<action android:name="android.intent.action.MAIN" />
MainActivityを「メインActivity」に設定します。これは、起動時に最初に表示されるActivityです。
以下の複数のactivityは「リストファイル」に登録する必要があります。これにより、プログラム内でこれらのActivityを見つけることができます。
strings.xml ファイルの設定内容:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">test</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="clickMe1">ボタンイベント1</string> <string name="clickMe2">ボタンイベント2</string> <string name="clickMe3">ボタンイベント3</string> <string name="clickMe4">ボタンイベント4</string> <string name="button1">ボタン1</string> <string name="button2">ボタン2</string> <string name="button3">ボタン3</string> <string name="button4">ボタン4</string> </resources>
もちろん、layoutファイル内で直接固定することもできますが、これによりメンテナンスが容易になります。これはAndroid開発で推奨される方法です。
以上は、編集者が皆さんに紹介したAndroid内のactivity遷移ボタンイベントの4つの書き方です。皆さんに役立つことを願っています。何か疑問があれば、コメントを残してください。編集者は迅速に回答します。また、呐喊教程サイトへのサポートに感謝しています。
声明:本文の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。本サイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害が疑われる内容を見つけた場合は、メールを送信してください:notice#oldtoolbag.com(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がとれましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)