Androidのプログラミング – 投稿 3: ボタンのClickイベントの取得

彼の非常に詳細な検討までの日数、Androidは文字を変更ボタンをクリックする方法を知りたいでせっかちですTextViewの. だから、この記事、私たちはのTextViewとEditTextのにイベントを操作するためのボタンを取得する方法を学びます. 我々はポストのプロジェクトで継続されます 2 タスクはTextViewには、我々はEditTextの中に入力した単語を表示するときに、ボタンをクリックする方法です.

[qads]

次のように私たちは、前日ビットインターフェースを見直し:
テキスト編集ボタン

ボタンとのTextViewとEditTextのに操作できるようにするために、我々は彼らと一緒に操作するためのJavaコードのJavaコードにこれらの要素を接続する必要があります. javaのに接続するには, 各要素は持っている必要があります 1 イド. あなたはidは、各要素の識別番号であることを理解することができます. 当社は、以下のTextViewなどの要素にIDを設定します アンドロイド:ID =”@ + ID /テレビ”. それに応じて テレビ TextViewには、そのIDです. この後は、tvNameを設定する必要があります, tvPhone,… TextViewのテレビスタンド, 名前が名前です, 電話携帯電話です, すなわちTextViewには、名前と電話のTextViewを表示するように表示します. だから、私たちのコードは次のようになります:

<?xml version="1.0" encoding="utf-8"?>
<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.nguyenvanquan7826.tut2texteditbutton.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text here" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me" />

</LinearLayout>

あなたは、コンポーネントのIDを設定したら, コー​​ドの実装を開始するために戻ってあなたを提出MainActivity.java.
この記事では、我々はすべての最初に触れているので、彼のJavaコードは少し導入すべきです. 現在、私たちのJavaコードは次のように:

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

以前に学んだピュアJavaとは異なり. 私たちは、それぞれの活動は、関数によって実行を開始するプログラムを開始する主な機能を持っていないのonCreate. ここで:

  • super.onCreate(savedInstanceState); 現在継承AppCompatActivityのonCreate関数呼び出しであります.
  • setContentView(R.layout.activity_main); 私たちのインターフェースの受注はactivity_main.xmlファイルです – 私たちの主なxmlファイルは、今まで、最初から操作されました. あなたが作成した場合 1 我々は絶対にこのAcitivity setContentViewコマンドのインターフェイスとして設定することができます/ resを/レイアウト内の他のxmlファイル、.

今、私たちは、プロセッサとのインターフェースに接続されている主要な部分を開始します. インターフェースを接続するには, 私たちは、型ボタンの対応する変数を宣言します, EditTextのVAのTextView. あなたは、次のコードを参照してください。:

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    /*
    * khai bao cac bien view
    * */
    private TextView tv;
    private EditText edit;
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // goi ham ket noi view
        connectView();
    }
    /*
    * ket noi cac thanh phan view
    * */
    private void connectView() {
        tv = (TextView) findViewById(R.id.tv);
        edit = (EditText) findViewById(R.id.edit);
        btn = (Button) findViewById(R.id.btn);
    }
}

私たちはラインでアクションを必要とする変数を対応する引用した後、 14, 15, 16, 私たちは、関数のonCreate connectView呼び出します. ConnectView機能は、我々はインターフェイスに接続するために書き込む機能です. 私たちは関数を使用する要素を接続するには findViewById への送信のため R.id.xyz XYZは、我々は、XMLファイル内の要素に設定したIDです. ただし、この機能は、ビューのタイプを返します。 (ビューには、コンポーネントのすべてのタイプの父であります, すなわちのTextView, EditTextの, ボタン,… ビューから継承されています) だから我々は、上記のように、各要素の正確な型にキャストを必要とします.

だから、インターフェイスへの接続が行われますされ、. 今、私たちは呼び出すことにより、ボタンのイベントをキャプチャやって始めます setOnClickListener. 私たちは、キャプチャするために多くのイベントを持っています, しかし、私はあなたをご案内します 2 私は、人々が頻繁に使用する希望の最も一般的な方法.

方法 1: ゲームで逮捕

/*
* ket noi cac thanh phan view
* */
private void connectView() {
    tv = (TextView) findViewById(R.id.tv);
    edit = (EditText) findViewById(R.id.edit);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            doClickButton();
        }
    });
}

private void doClickButton() {
    String text = edit.getText().toString().trim();
    tv.setText(text);
    edit.setText("");
}

より多くのあなたは、括弧でbtn.setOnClickListenerを書いて、書き込みがあります 新しいONC 提案ボックスが表示され、あなたが最初のものである選択します View.OnClickListener それはあります 1 自動的に関数のonClick用のコードを生成するためのインタフェース.
setOnClickListenerボタン

つまり、あなたがボタンをクリックすると、システムが呼び出します onClickの, それは我々が望んでいただけで何になりました, しかし、ここでEditTextのTextViewのテキストにそれを取るです. 私たちは、関数を記述し、onClickのdoClickButtonでそれを呼び出します. 機能doClickButtonで, 私たちは見ます 3 現在.

  • テキストの最初の行は、変数に割り当てられたEditTextの文字列のテキストを取り出し、 (ToString関数は、我々はチェーンを取り出したものを有効にすることです, トリム機能は、先頭に空白を削除した場合に終了することです). したがって、私たち 関数をとることによってEditTextのテキストのgettext();
  • 2行目は、我々は、機能のTextViewで上取得する必要があり、テキストブックであるのsetText(テキスト)
  • 三行目, 私たちは、EditTextのテキストを削除しました.

今、あなただけでは果物を実行し、お楽しみください.
イベントクリックボタン

方法 2: 一度に多くのボタンへの行き方

あなたが気づいた場合, 方法です 1, すべてのボタンは、我々は次のようになります 1 自身のために、イベントセグメント. このように複数のボタンの場合 (ハンドヘルドコンピュータとしてVDとして) コー​​ドは非常に長く、不便になります. それでは、どのよう 2 このような場合に適して. 次のようにイベントのコードを編集することができます方法は、開始します.

/*
* ket noi cac thanh phan view
* */
private void connectView() {
    tv = (TextView) findViewById(R.id.tv);
    edit = (EditText) findViewById(R.id.edit);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(this);
}

つまり、これは、関数setOnClickListenerに渡されていることを、我々は再び新しいOnClickListenerを作成しないことを意味します. しかし、今は、エラーが表示されます。. 単語の上にカーソルを置きます この, ここで、彼は失敗しました, 押し Altキー + 入る あなたは、ダイアログボックスがヒントを表示されます表示されます:
実装-onlickボタン

あなたは、行を選択します 2 た MainAcitvityがView.OnClickListenerを実装してください, 次のダイアログボックスが表示されます, あなたは[OK]を選択します.
実装法、onclickの

システム・コードを実行する学生を待って、あなたは関数が表示されます 自発のonClick 機能と同等でのonCreate, 上記クラスラインより View.OnClickListenerを実装します. ここでは、それが全体のボタンの逮捕のonClickイベントを実行するように機能することができるので、全体のクラスがインタフェースのMainAcitivty例、View.OnClickListenerであることを理解します (または特定のビュー) setOnClickListener呼ばれています(この); だから我々は、ボタンを同時にたくさんのイベントを開始することができます. onClickの機能は持っている時に、我々はボタンをクリックし何を区別するために、 1 ビューを回します, 我々は区別しないものです. 我々は追加するとし 1 インタフェースボタンに加えて、EditTextの中のテキストを削除するには、次のように我々のコードは次のようになります:

インターフェイスコード

<?xml version="1.0" encoding="utf-8"?>
<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.nguyenvanquan7826.tut2texteditbutton.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text here" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me" />

    <Button
        android:id="@+id/btnClear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Clear" />

</LinearLayout>

コー​​ドのJava.

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    /*
    * khai bao cac bien view
    * */
    private TextView tv;
    private EditText edit;
    private Button btn;
    private Button btnClear;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // goi ham ket noi view
        connectView();
    }

    /*
    * ket noi cac thanh phan view
    * */
    private void connectView() {
        tv = (TextView) findViewById(R.id.tv);
        edit = (EditText) findViewById(R.id.edit);
        btn = (Button) findViewById(R.id.btn);
        btnClear = (Button) findViewById(R.id.btnClear);

        // set on click
        btn.setOnClickListener(this);
        btnClear.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:
                doClickButton();
                break;
            case R.id.btnClear:
                doClickButtonClear();
                break;
        }
    }

    private void doClickButton() {
        String text = edit.getText().toString().trim();
        tv.setText(text);
        edit.setText("");
    }

    private void doClickButtonClear() {
        edit.setText("");
    }

}

今日はここで停止します. 私たちは、あなたが理解し、動作を開始するボタンの良いイベントを練習し、テキストを置くことができます願っています, TextViewとEditTextのからテキストを取得.