English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Androidでactivity間の遷移のボタンイベントの4つの書き方

具体的な実装コード:

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(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がとれましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ