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

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

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

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

2466閲覧

メッセージクラスを作ってstring.xmlの文字列を書くには。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/02/05 00:55

public class Message { private Paint paint = new Paint(); private int x; private int y; private String message; public Message(int x, int y) { this.x = x; this.y = y; this.message = getString(R.string.hello); } public void draw(Canvas canvas) { canvas.drawText(this.message, this.x, this.y, paint); } }

メッセージクラスで、文字列をstrings.xmlで定義して、drawで書くとすると、
こうなるんでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

回答を見ながら色々考えて、Activity を継承することにしました。

public class Message extends Activity { Context context private Paint paint = new Paint(); private int x; private int y; private String message; public Message(Context context, int x, int y) { this.context = context; Resources res = context.getResources(); this.x = x; this.y = y; this.message = res.getString(R.string.hello); } public void draw(Canvas canvas) { canvas.drawText(this.message, this.x, this.y, paint); } }

投稿2017/02/07 22:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

strings.xmlの中に定義したhelloという名前の文字列を、Messageクラスのコンストラクターで取り出して・・・とやっていますがgetString(リソースID)はActivicy(の親クラスのContext)のメソッドのようですのでMessageクラスで直接使うことはできないと思います。

MessageクラスをActivityで利用するクラスだと仮定すると、文字列リソースの取得(getString(R.string.hello))はActivityで行ってそれをMessaageクラスのコンストラクターへ渡すなどの方法を採ってはいかがでしょうか。

また、Messageクラスで複数の文字列リソースを使用する必要がある場合はそれら全てをActivity側で取り出してMessageのコンストラクターへ渡すとしてもよいですが、それがわずらわしければいっそActivityのインスタンスそのものをMessageクラスのコンストラクターへ渡してそれを使って次のようにするという手もあるかと思います。

java

1public class Message { 2 private Paint paint = new Paint(); 3 4 private int x; 5 private int y; 6 private String hello; 7 private String world; 8 9 public Message(int x, int y, Activity activity) { 10 this.x = x; 11 this.y = y; 12 this.hello = activity.getString(R.string.hello); 13 this.world = activity.getString(R.string.world); 14 } 15 16 public void draw(Canvas canvas) { 17 canvas.drawText(this.hello, this.x, this.y, paint); 18 canvas.drawText(this.world, this.x, this.y + 20, paint); 19 // 単なる例なのでy座標の計算はイイカゲンです 20 } 21}

自分なりにこんなページを参考にしながら考えてみました。不適切な点がありましたらご指摘いただければと思います。

投稿2017/02/05 04:33

KSwordOfHaste

総合スコア18394

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問