Androidのプログラミング – 投稿 7: トースト, チェックボックス, ラジオボタン, ダイアログ

この記事では、Androidの他の基本的な被験者の数で操作を実行するためにご案内します. このすべての興奮と、あまりにも単調ではないを行うには, 次のように私は、基本的な内容でOTVINA研究に入学するためのアプリケーションを作るためにご案内します:

[qads]

アンドロイド登録フォーム

原理はこの短いです. ときあなたは、フルフィル, 我々は、すべての情報と検査を取得します. エラーがどこかで、その後発表された場合 (トーストによります) そして再び開始. すべてがOKであれば、成功のメッセージダイアログを表示! 何が今始まります.

まず、インターフェイスを設計します. インターフェースはあまりにも複雑で、ほぼ唯一ではないと 1 夜 (縦に) このような状況で、我々はのLinearLayoutは論理的で最も扱いやすい選択してください.
ああ、私はまた、この時点であなたに最新のオブジェクトを、これをお勧めしますので、私たちはいくつかのライブラリをオフラインで追加します. あなたはファイルを開きます build.gradle そして、追加のライブラリ 依存関係

アンドロイド・ビルドのGradle

    compile 'com.android.support:design:24.0.0'
    compile 'com.wdullaer:materialdatetimepicker:2.3.0'

最初のライブラリは、美しいアンドロイドにいくつかのビューを作成するように設計されたライブラリです, これで我々はEditTextのある使用します, ボタン.
図書館スタッフ 2 当事者によるライブラリー 3 美しい日付を選択するためのインタフェースを提供します

そして、そこになります 1 プロジェクトを同期して更新することを警告する通知上記イエローゴールド. あなたがクリック 今すぐ同期

アンドロイド同期プロジェクト

今すぐファイルを開きます activity_main.xml そして、コードを開始

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="8dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:src="@drawable/logo" />

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/editName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/name" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/editPhone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/phone"
                android:inputType="phone" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/editEmail"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/email"
                android:inputType="textEmailAddress" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/editAddress"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/address" />
        </android.support.design.widget.TextInputLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/btnBirthDay"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/birthday" />

            <RadioGroup
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/radMale"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:checked="true"
                    android:text="@string/male" />

                <RadioButton
                    android:id="@+id/radFeMale"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="@string/female" />
            </RadioGroup>
        </LinearLayout>

        <EditText
            android:id="@+id/editGroup"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/group" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/course" />

        <CheckBox
            android:id="@+id/cbAndroid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/android" />

        <CheckBox
            android:id="@+id/cbWeb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/web" />

        <CheckBox
            android:id="@+id/cbIC3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/ic3" />

        <android.support.v7.widget.AppCompatButton
            android:id="@+id/btnOk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/ok" />
    </LinearLayout>
</ScrollView>

アンドロイド登録フォームプレ

以下の点にご注意に上記のコードで:

  • 私たちはこのインタフェースのコンテンツがたくさんあるので、いくつかの小さな画面では、すべてのデータフィールドが表示されませんでので、, 私たちは使用します ScrollView, それはそれで囲まれている私たちは、インターフェイスにプルアップすることができます (ここで、画面全体があります).
  • オブジェクト ImageViewの 画像を表示することができ. ここでは写真のロゴです, 次のことができます ここにロゴをダウンロード そして、フォルダの /解像度/描画可能.
  • android.support.design.widget.TextInputLayout データをインポートするEditTextのをクリックすると、EditTextのと合わせ私たちは素敵なエフェクトを作成することができます.
  • EditTextのではいくつかの属性があります アンドロイド:inputType, それはキーボードが風にポップアップ表示するのに役立ちます. 例えば、携帯電話の種類EditTextのをクリック, テンキーを含むキーボードがポップアップし、あなたが呼んで同じ文字.
  • ラジオボタン 円形オブジェクトであります, オプションの1つを選択するために使用, 私たちはによってに向かってする必要があります RADIOGROUP そうでなければ、チェックボックスと同時に多くのオプションを選択することができます.
  • AppCompatButtonオブジェクトがボタンと、より良い効果から継承されます
  • 彼の主題のテキスト全体は、@文字列/ ABCニュースから取られているが、ファイルから取得されます /解像度/値/ string.xmlを指定. 我々は、この目的のテキストを再利用することができます設定するときに、Javaによってコード (すなわち、私たちは、XMLやJavaから呼び出すことができます) 以降、複数の言語で使用されます.

ファイル/res/values​​/string.xml NHU SAU:

<resources>
    <string name="app_name">TUT7CheckBoxRaidoToast</string>

    <string name="name">Họ và tên(*)</string>
    <string name="phone">Điện thoại(*)</string>
    <string name="email">Email(*)</string>
    <string name="address">Địa chỉ(*)</string>
    <string name="birthday">Ngày sinh</string>
    <string name="male">Nam</string>
    <string name="female">Nữ</string>
    <string name="group">Nhóm với ai (nếu có)</string>
    <string name="course">Khóa học</string>
    <string name="android">Android</string>
    <string name="web">Web</string>
    <string name="ic3">IC3</string>

    <string name="ok">Xong</string>
    <string name="cancel">Hủy</string>

    <string name="please_enter_name">Bạn chưa nhập tên</string>
    <string name="please_enter_phone">Bạn chưa nhập điện thoại</string>
    <string name="please_enter_email">Bạn chưa nhập email</string>
    <string name="please_enter_address">Bạn chưa nhập địa chỉ</string>
    <string name="please_enter_birthday">Bạn chưa chọn ngày sinh</string>
    <string name="please_enter_course">Bạn chưa chọn khóa học</string>

    <string name="success">Thành công</string>
    <string name="notify_thanks">Cảm ơn bạn đã đăng ký khóa học {0}.\nChúng tôi sẽ gửi đến bạn những thông tin mới nhất sắp tới</string>

</resources>

logo.png VAO /解像度/描画可能なファイルをコピーします。
アンドロイド登録フォーム - アドオンのロゴ

それでおしまい. 今だけのJavaコードに向けます.

package com.nguyenvanquan7826.tut7checkboxraidotoast;

import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatButton;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;

import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Context context;

    private EditText editName;
    private EditText editPhone;
    private EditText editEmail;
    private EditText editAddress;
    private EditText editGroup;

    private AppCompatButton btnBirthDay;

    private RadioButton radMale;
    private RadioButton radFemale;

    private CheckBox cbAndroid;
    private CheckBox cbWeb;
    private CheckBox cbIC3;

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

        context = this;

        connectView();
    }

    private void connectView() {
        editName = (EditText) findViewById(R.id.editName);
        editPhone = (EditText) findViewById(R.id.editPhone);
        editEmail = (EditText) findViewById(R.id.editEmail);
        editAddress = (EditText) findViewById(R.id.editAddress);
        editGroup = (EditText) findViewById(R.id.editGroup);

        btnBirthDay = (AppCompatButton) findViewById(R.id.btnBirthDay);
        btnBirthDay.setOnClickListener(this);
        findViewById(R.id.btnOk).setOnClickListener(this);

        radMale = (RadioButton) findViewById(R.id.radMale);
        radFemale = (RadioButton) findViewById(R.id.radFeMale);

        cbAndroid = (CheckBox) findViewById(R.id.cbAndroid);
        cbWeb = (CheckBox) findViewById(R.id.cbWeb);
        cbIC3 = (CheckBox) findViewById(R.id.cbIC3);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        switch (id) {
            case R.id.btnBirthDay:
                selectBirthDay();
                break;
            case R.id.btnOk:
                ok();
                break;
        }
    }

    private void selectBirthDay() {
        int defaultYear = 1990;
        int defaultMonth = 0;
        int defaultDate = 1;
        // create and setting Datapicker
        DatePickerDialog dpd = DatePickerDialog.newInstance(
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {

                        Calendar calendar = Calendar.getInstance();
                        // set select date for calendar
                        calendar.set(year, monthOfYear, dayOfMonth);

                        // config string format to show date
                        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

                        // set date for button birthday
                        btnBirthDay.setText(sdf.format(calendar.getTime()));
                    }
                },
                defaultYear,
                defaultMonth,
                defaultDate
        );
        dpd.setOkText(context.getResources().getString(R.string.ok));
        dpd.setCancelText(context.getResources().getString(R.string.cancel));

        // show datepicker
        dpd.show(getFragmentManager(), "DatePickerDialog");
    }

    private void ok() {
        // get data
        String name = editName.getText().toString().trim();
        String phone = editPhone.getText().toString().trim();
        String email = editEmail.getText().toString().trim();
        String address = editAddress.getText().toString().trim();
        String group = editGroup.getText().toString().trim();

        String birthDay = btnBirthDay.getText().toString().trim();
        String sex = radMale.isChecked() ? getString(context, R.string.male) : getString(R.string.female);
        String course = "";
        if (cbAndroid.isChecked()) {
            if (course.length() > 0) {
                course += ", ";
            }
            course += getString(R.string.android);
        }
        if (cbWeb.isChecked()) {
            if (course.length() > 0) {
                course += ", ";
            }
            course += getString(R.string.web);
        }
        if (cbIC3.isChecked()) {
            if (course.length() > 0) {
                course += ", ";
            }
            course += getString(R.string.ic3);
        }


        // check data
        if (TextUtils.isEmpty(name)) {
            editName.requestFocus();
            Toast.makeText(context, getString(R.string.please_enter_name), Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(phone)) {
            editPhone.requestFocus();
            Toast.makeText(context, getString(R.string.please_enter_phone), Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(email)) {
            editEmail.requestFocus();
            Toast.makeText(context, getString(R.string.please_enter_email), Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(address)) {
            editAddress.requestFocus();
            Toast.makeText(context, getString(R.string.please_enter_address), Toast.LENGTH_SHORT).show();
            return;
        }

        if (birthDay.equals(getString(R.string.birthday))) {
            Toast.makeText(context, getString(R.string.please_enter_birthday), Toast.LENGTH_SHORT).show();
            return;
        }

        if (TextUtils.isEmpty(course)) {
            Toast.makeText(context, getString(R.string.please_enter_course), Toast.LENGTH_SHORT).show();
            return;
        }

        // if all is ok, we process data and show dialog to notify

        String notifyThanks = getString(context, R.string.notify_thanks);
        notifyThanks = completeString(notifyThanks, new String[]{course});

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(R.string.success)
                .setMessage(notifyThanks)
                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // do something
                    }
                })
                .create()
                .show();
    }

    public static String getString(Context context, int id) {
        return context.getResources().getString(id);
    }

    public static String completeString(String source, String[] item) {
        for (int i = 0; i < item.length; i++) {
            source = source.replace("{" + i + "}", item[i]);
        }
        return source;
    }
}

上記のコードで, あなたが見ています 1 コンテキスト駅, それがあることを理解してください 1 文脈変数. すべてのアクションは、特定のコンテキストに起こります. 例, 表示します 1 トースト (迅速な通知) 彼らはまた、コンテキストに必要 (コンテキスト). 多くのチュートリアルで, あなたは彼らのように書かれて見ることができます この または MainActivity.this, 私が割り当てられていたので、彼らはここにともに コンテキスト=この すでに.
しかし、多くの新しいコードがありますが、私は注釈を付け、また読みするのは非常に簡単にしています, 読者はすぐにコードを理解し、退職します!

結果:

アンドロイド登録フォーム-OK