テキストボックスに入力した文字列を取得して表示する
タイトル通りなんですが、入力した文字を取得して表示させます。
表示のさせ方はトースト(朝食じゃないです)やダイアログ、テキストビューで出します。
開発環境
AndroidStudio2.3
MacOS Sierra
プロジェクト作成
Project : Get_String_Textbox
MinimumSDK : API19(KitKat)
レイアウト作成
今回のレイアウトでは
- テキストボックス
- ボタン
- テキストビュー
をそれぞれ一つずつ配置します。
android:id="+id/hoge"
のようにして、それぞれにidを設定してください。(後で使います)
コード例
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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.mito.get_string_textbox.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="156dp" android:ems="13" android:inputType="textPersonName" android:hint="Please Input Text" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="90dp" android:text="No Input" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="GET" android:id="@+id/button"/> </RelativeLayout>
処理を書く
まず、テキストボックスやボタン、テキストビューの変数を用意します。
private EditText editText; private Button button; private TextView textView;
これらのインスタンスをonCreate内で生成します。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //変数 = (キャスト)findViewById(使いたいウィジェットのid) editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button); textView = (TextView) findViewById(R.id.textView); }
ボタンにリスナー(その動作、今回で言えばボタンが押された時に呼ばれるやつ)を設定します。
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //ここに押された時の処理を記述 } });
押されたら、テキストボックスから文字列を取得してそれをテキストビューにセットします。
onClick内に記述
String text = editText.getText().toString(); //EditText(テキストボックス)から文字列を取得 if (!text.equals("")){ textView.setText(text); //TextViewに文字列をセット editText.setText(""); }
setText()
で文字列のセット、 getText()
で文字列を取得できます。
今度は入力された文字列をトーストで表示してみましょう。
//Toast.makeText(コンテキスト, 表示したい文字列, どれぐらい(時間)表示させたいか(LONG or SHORT)).show();
Toast.makeText(view.getContext(), text, Toast.LENGTH_LONG).show();
最後にshow()しないと表示されません。(mitoは忘れていて悩んでました)
コンテキストについては今は詳しく知らなくてもいいです。(thisや上のコードのようにすると良さげ)
これでトースト表示まではできたはずです。
最後に、ダイアログで表示させます。
new AlertDialog.Builder(view.getContext()) .setTitle("ダイアログ") //タイトル .setMessage(text) //本文 .setPositiveButton("OK", null) //押したら閉じるボタンみたいなやつのテキスト(第一引数) .show();
ダイアログはこちらからコピペで使えます。
Fragmentを作った方がいいと書いてありますが、今回は書いていません。
おまけ
ついでにボタンを押した時に何も入力されていなかったらトーストを表示されるようにしてみましょう。
if (!text.equals("")){ ... ... } else { Toast.makeText(view.getContext(), "入力してください", Toast.LENGTH_SHORT).show(); }
最終的なコード
MainActivity.java
package com.example.mito.get_string_textbox; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText editText; private Button button; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button); textView = (TextView) findViewById(R.id.textView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = editText.getText().toString(); if (!text.equals("")){ textView.setText(text); editText.setText(""); Toast.makeText(view.getContext(), text, Toast.LENGTH_SHORT).show(); new AlertDialog.Builder(view.getContext()) .setTitle("ダイアログ") .setMessage(text) .setPositiveButton("close", null) .show(); } else { Toast.makeText(view.getContext(), "入力してください", Toast.LENGTH_SHORT).show(); } } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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.mito.get_string_textbox.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="156dp" android:ems="13" android:inputType="textPersonName" android:hint="Please Input Text" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="90dp" android:text="No Input" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="GET" android:id="@+id/button"/> </RelativeLayout>
mito.
3/11 追記
githubにて今回のプロジェクトを公開しました。
リンク(https://github.com/mitohato/AndroidTutorial)