リスニングベースのイベント処理メカニズム


このセクションの概要:

第 2 章では、これらのコントロールを使用して美しいインターフェイスを形成できますが、次のステップはロジックとビジネス実装の学習を開始することです。 . この章ではAndroidのイベント処理の仕組みについて解説します!イベント処理メカニズムとは何ですか?例を挙げる 簡単な例としては、ボタンをクリックすると、サーバーにログイン リクエストが送信されます。もちろん、Android にはこの種のイベント処理メカニズムだけではありません。 たとえば、画面上で選択が行われるとき、画面上の特定の領域をクリックします。簡単に言うと、イベント処理メカニズムは、UI を操作するときに、舞台裏でいくつかの小さなアクションを追加するだけです。 !このセクションでは、最も頻繁に使用される、リスニングに基づくイベント処理メカニズムを紹介します。


1. 監視に基づく時間処理メカニズムのモデル:

プロセス モデル図:

1.jpg

テキストの説明:

イベント監視メカニズムは、イベント ソースで構成されます。 イベントイベントリスナーは3種類のオブジェクトで構成されます 処理の流れは以下の通りです。ステップ1:ユーザーの操作をリッスンするイベントソース(コンポーネント)のリスナーを設定ステップ2:ユーザーの操作によりイベントソースのリスナーがトリガーされるステップ3:対応するものが生成されるイベントオブジェクトステップ4:このイベントソースオブジェクトをパラメータとしてイベントリスナーに渡しますステップ5:イベントリスナーはイベントオブジェクトを判断し、対応するイベントプロセッサ(対応するイベント処理メソッド)を実行します

概要:

イベント リスニング メカニズムは、イベント ソース (コンポーネント) のイベント処理がイベント リスナーに委任される、委任されたイベント処理メカニズムです。 イベント ソースで指定されたイベントが発生すると、指定されたイベント リスナーに通知され、対応する操作が実行されます。

以下の 1 つを使用します。
単純なボタンのクリック。トースト情報プログラムにプロンプ​​トを表示します ;

これを行うには 5 つの異なる形式を使用してください!

レンダリング:

2.png1) 匿名内部クラスを直接使用します


最も一般的に使用されるクラス: 直接 setXxxListener を実行し、内部のメソッドを書き換えます。 通常は一時的に一度使用されるだけで、再利用性は低いです。

実装コードは次のとおりです:

MainActivity.java:

パッケージ com.jay.example.innerlisten;    

android.os.Bundle をインポートします。    
インポート android.view.View;    
android.view.View.OnClickListener をインポートします。    
android.widget.Button をインポートします。    
android.widget.Toast をインポートします。    
android.app.Activity をインポートします。    


public class MainActivity extends Activity {
private Button btnshow;    

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);    
setContentView(R.layout.activity_main);    
btnshow = (ボタン) findViewById(R.id.btnshow);    
btnshow.setOnClickListener(new OnClickListener() {
// 重写点击イベントの処理方法onClick()
@Override
public void on Click(View v) {
//显示Toast情報
Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();

});    
}
}

2) 内部クラスの使用

は、上記の匿名内部クラスとは異なります。 使用の利点: このクラスで再利用でき、外部クラスのすべてのインターフェイス コンポーネントに直接アクセスできます。

実装コードは次のとおりです: MainActivity.java:

package com.jay.example.innerlisten;
import android.view.View; . OnClickListener;
import android.widget.Toast;
@Override
protected void onCreate; ,,,スーパー。 oncreate(); btnclicklistener実装View.onclickListener {
@Override

3) 外部クラスを使用する:

は、イベントを処理するために別の Java ファイルを作成することです。この形式はあまり使用されません。外部クラスはユーザー インターフェイスに直接アクセスできないため クラス内のコンポーネントは構築メソッドを通じて渡される必要があります。その結果、コードが十分に簡潔になりません。

ps: パラメーターの受け渡しを示すために、ここではトースト プロンプトの代わりに TextView が使用されています。

3.png

実装コードは次のとおりです: MyClick.java:

package com.jay.example.innerlisten;
import android.view.View import android.widget.TextView;

public class MyClick 実装 OnClickListener {
private TextView textshow;
public MyClick(TextView txt)
{
textshow = txt } public void onClick (View v) {
use with use with using through using '' ' out's ' out's out out way outmb out out out out out out out out out out of to ' ' ' t t .

MainActivity.java

package com.jay.example.innerlisten;    
android.os.Bundle をインポートします。    
android.widget.Button をインポートします。    
インポート android.widget.TextView;    
android.app.Activity をインポートします。    


public class MainActivity extends Activity {
private Button btnshow;    
プライベート TextView txtshow;    
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);    
setContentView(R.layout.activity_main);    
btnshow = (ボタン) findViewById(R.id.btnshow);    
txtshow = (TextView) findViewById(R.id.textshow);    
//直接new一外部类、并ハンドルTextViewはパラメータ入力
btnshow.setOnClickListener(new MyClick(txtshow));    
}
}

4) アクティビティをイベント リスナーとして直接使用します

必要なのは、アクティビティ クラスに XxxListener イベント リスニング インターフェイスを実装させ、アクティビティ内の対応するイベント ハンドラー メソッドを定義してオーバーライドすることだけです。 例: アクティビティは OnClickListener インターフェイスを実装し、onClick(view) メソッドをオーバーライドし、特定のコンポーネントのイベント リスニング オブジェクトを追加します。 その場合は、直接setXxx.Listener(this)を実行するだけです

実装コードは次のとおりです:MainActivity.java:

package com.jay.example.innerlisten;
import android.os.Bundle; view.View;
import android.view.View.OnClickListener;
import android.app.Activity;
import android.app.Activity;
public class MainActivity Extends Activity Implements Onclicklistener {
Private Button BTNSHOW; (Savedinstancestate); ; public void onClick(View v) {
Toast.makeText( getApplicationContext() , "ボタンがクリックされました", Toast.LENGTH_SHORT).show();

5) ラベルに直接バインド:

は、XML レイアウト ファイル内の対応するアクティビティにイベント処理メソッドを直接定義します。 例:public void myClick(View source) ソースはイベントソース (コンポーネント) に対応します 次に、イベントをトリガーするコンポーネントに対応するレイアウト ファイルで、属性を設定します: onclick = "myclick"

実装コードは次のとおりです: MainActivity.java:

package com.jay.example.caller ;
android.app.Activity をインポート;
android.view.View をインポート;
public class MainActivity extends Activity {
@Override
protected void onCreate; SavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main) ) getApplicationContext(), "ボタンがクリックされました", Toast.LENGTH_SHORT).show();

main.xml レイアウト ファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android. com/Tools "o Android: ID ="@+ID/line/linearlayout1 "
Android:layout_width =" match_parent "
android:layout_heigh_parent"
Android D: Orientation = "Vertical" & GT
& LT; :layout_width ="wrap_content" using use ’ s ’ s ’ use using through using through using ’s to’s without’s over with ‐to ‐ ‐wrap_content to be

このセクションの概要


このセクションでは、イベント処理を導入しました。 Android のメカニズムの例は、onClickListener クリック イベントです。もちろん、これ以外にも、setXxxListener などのイベントが存在します。 さらに、特定の状況に応じて、1、2、3、5 の 5 つの方法がより一般的に使用されます~