質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1409閲覧

Androidプログラムに関して質問です。

mop

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/01/10 06:23

質問5150の続きになります。
以前の質問に関してどうしてもわからない点があったので質問させて下さい。

lang

1for (ReactiveString v : texts) { 2 System.out.println(v); 3 // こんにちは、Johnさん 4 // さようなら、Johnさん 5}

とありますが、この場合は標準出力にtexts配列の要素全てを渡しているように思います。
texts配列の要素一つのみをTextViewにsetText()したいのですが、どうすれば良いでしょうか?

後、要素を追加するときですが、

lang

1ReactiveString[] texts = { // ちょっと修正:省略記法にしました 2 new ReactiveString("こんにちは、%sさん", ref), 3 new ReactiveString("さようなら、%sさん", ref) 4};

"こんにちは"のみを追加する場合は

lang

1ReactiveString[] texts = { // ちょっと修正:省略記法にしました 2 new ReactiveString("こんにちは、%sさん", ref), 3 new ReactiveString("さようなら、%sさん", ref), 4 new ReactiveString("こんにちは", ref) 5};

と書いて良いのでしょうか?
煩わしくて申し訳ありません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと補足。先頭に、質問5150の続き、と書いておくと、後からこの質問を読む人にも分かりやすくなりますよ。URLを貼るだけでもOKです。

さて本題ですが、最初の「標準出力にtexts配列の要素全てを渡している」について。
前回のサンプルでは、namaeを変えたあとで全てのReactiveStringの値が自動的に変わる、ということをご理解いただくために、全てを表示させています。
もちろん、1つだけを選択して表示することも可能です。

前回作ったReactiveStringは、toStringメソッドで文字列を取得できますので、

lang

1ReactiveString[] texts = { /* 省略 */ }; 2int i = 0; // 表示したい要素のインデックス 3textmessage.setText(texts[i].toString());

のようにすればOKです。

次に、「"こんにちは"のみを追加する場合」ですが、
上で書いた通り、toStringで文字列が得られるようにしていますので、textsの配列はReactiveStringに限定しなくても良いのです。

具体的には、配列をObject[]にします。すべてのクラスにはtoStringメソッドが備わっていますので、toStringで文字列を取得する前提であれば、どんなクラスのオブジェクトでも格納できます。その代わり、toStringメソッド以外のReactiveStringのメソッドは使えなくなります。今回のケースではObject[]にしても問題ないと思います。

上記を踏まえて、前回の「使い方」を修正した例を下記に示します。
System.out.printlnの中でtoStringをするので、通常は呼ぶ側でtoStringを書く必要はありません。)

lang

1ObjectReference ref = new ObjectReference("John"); 2Object[] texts = { 3 new ReactiveString("こんにちは%sさん", ref), 4 new ReactiveString("さようなら%sさん", ref), 5 "こんにちは", // Stringクラスのオブジェクト 6 Integer.valueOf(123) // Integerクラスのオブジェクト 7}; 8for (Object v : texts) { 9 System.out.println(v.toString()); // toStringは無くても良い 10 // こんにちは、Johnさん 11 // さようなら、Johnさん 12 // こんにちは 13 // 123 14} 15ref.value = "Jane"; 16for (Object v : texts) { 17 System.out.println(v.toString()); // toStringは無くても良い 18 // こんにちは、Janeさん 19 // さようなら、Janeさん 20 // こんにちは 21 // 123 22}

投稿2015/01/10 07:56

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mop

2015/01/10 08:20

続きの質問への解答有難う御座います。確かに閲覧した全員に分かるようにすべきでした。 分からないことをそのままにせず質問して正解でした。 有難う御座います。
argius

2015/01/10 08:30

回答する側も、できるだけ質問の意図を掴むようにしていますが、質問文だけでは分からないところもあり、質問者さんのご希望に沿う回答ができないことがありますし、ミスに気付かないこともあります。 なので、今回のように回答で分からないことがあった時にコメントなどで確認していただくのは、とても助かります。
mop

2015/01/10 08:47

そこまで深く意識して回答されていたことに感謝感激です。 自分もどなたかの質問に答えられる程になりたいです。 コードもスムーズにプログラムに組み込めました、本当にありがとう御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問