0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[ Android Studio ] ボタン押下による言語表示の切替(未完成)

Posted at

ボタン押下による言語表示に挑戦してみた。

##ボタン作成
 前々回、前回と同様にボタンを作成。
 今回作るのは以下の2種。
 ・「JAPANESE」(id:japaneseButton)日本語切替用のボタン
 ・「English」 (id:englishButton) 英語切替用のボタン

##クリックイベント取得
 これも前回同様にラムダ式を用いて実装。
 
 ここでLocaleというクラスを用いる。
 このクラスは言語ごとに定数があり、どの定数を持っているかで表示言語を切り替えるというときに使える。
 例えば、以下のとおりである。

    Locale locale = Locale.JAPAN;

 
JAPANという定数は、Localeクラスで以下のように定義されている。

    static public final Locale JAPAN = createConstant( lang: "ja", country: "JP" );

"ja"はLocaleクラスのgetLanguageメソッドで取得できるので、その値で言語を識別するといった具合である。

##定数ごとの分岐
 localeからgetLanguage()により値を取り出す。その値ごとに処理を分ける。

    String lang = locale.getLanguage();
    switch(lang) {
    case "ja":
            //String型変数に日本語文字列を代入
        break;
    default:
        //String型変数に日本語以外の文字列を代入
        break;
    }

##TextViewの表示
 TextViewのsetTextにより言語別の文字列を入れて終了。

    text.setText(String型変数);

##実行
 結果、うまくいかなかった
 以下が失敗したサンプルコードである。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Locale;


public class MainActivity extends Activity {

    //言語設定用変数
    Locale locale;
    String str = "";
    //テキスト表示
    TextView text;

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

    /*
    日本語英語切替ボタンの実装
     */
    public void languageInitialize() {

        //クリックを取得するボタン
        Button japaneseButton = (Button) findViewById(R.id.japaneseButton);
        Button englishButton = (Button) findViewById(R.id.englishButton);

        // 定数取得
        japaneseButton.setOnClickListener((View v3) -> {
            locale = Locale.JAPAN;
        });
        englishButton.setOnClickListener((View v4) -> {
            locale = Locale.ENGLISH;
        });

        //定数ごとの分岐
        String lang = locale.getLanguage();
        switch (lang) {
        case "ja":
            str = "こんにちは";
            break;
        case "en":
            str = "Hello";
            break;
        }

        //表示
        text.setText(str);
    }
}

 実行するとエミュレータは起動するが、アプリがstopしているようだ。
 なにか設定に問題があるかもしれない。
 次回は今回の続きで、このエラーを修復したいと思う。

 以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?