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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1112閲覧

Dialogfragment内におけるString.xmlの文字列取得について

hood

総合スコア351

Java

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

Android Studio

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

0グッド

0クリップ

投稿2018/07/22 01:29

編集2018/07/22 01:31

###Dialogfragment内でString.xmlの文字列取得が取得できません・・・
お世話になっております。今回も迷路に迷い込んでいます。

Activity内で、できていたString.xmlの文字列を取得する方法がDialogfragment内
内では通用しません。getPackageName()を使おうとすると赤くなってしまうのです。

一応試したこととして
getPackageName()の部分に直接パッケージネームを入れる
・Activity内でDialogfragmentのビューを取得し、String.xmlを取得しようとする入れようとする
などをやりました。

一番目の対策はパッケージネームが赤くなりました。
二番目の対策はアプリは動いたのですが、文字列が取得できませんでした。

二番目の対策をつきつめれば改善できるかなと思いましたが、その前に
getPackageName()をDialogfragment内で使えるか?
・またできないとしたら、Dialogfragment内におけるgetPackageName()の代替的なメソッドはあるのか?
この二つの点を知りたくて投稿しました。(そっちのほうが遥かに楽だし、可読性もあがるものですから・・・)

下に二番目の対策前のコードを載せておきます。

lang

1import・・・ 2 3public class LogFragment extends DialogFragment { 4 Dialog logDialog; 5 6 public LogFragment() { 7 // Required empty public constructor 8 } 9 10 @Override 11 public Dialog onCreateDialog(Bundle savedInstanceState) { 12 logDialog=super.onCreateDialog(savedInstanceState); 13 return logDialog; 14 } 15 16 @Override 17 public View onCreateView(LayoutInflater i, ViewGroup c, Bundle savedInstanceState){ 18 logDialog.setContentView(R.layout.fragment_log); 19 20 View content = i.inflate(R.layout.fragment_log, null); 21 //問題の部分 22 TextView log=LogFragment.content.findViewById(R.id.text_log_content); 23 Resources logRes=getResources(); 24 int logId = getResources().getIdentifier("message" + FirstActivity.number, 25 "string", getPackageName());//ここのgetPackageName()が赤くなる。                26  //FirstActivity.numberは他のActivityで動的に変化する変数を取得している 27 //これで動的なString.xmlの文字列リソースを実現したい。 28 log.setText(logRes.getString(logId)); 29 30略-- 31 return content; 32 } 33 34略-- 35}

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

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

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

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

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

guest

回答1

0

ベストアンサー

これも前回と同じです。getActivity().getPackageName()のようにすれば解消できるでしょう。

getPackageName()はContextというクラスが持つメソッドですが、DialogFragmentはContextを継承していないので、直接は呼び出せません。getActivity()の返り値はFragmentActivity型ですが、FragmentActivityはContextを継承しているので、これを参照すればgetPackageName()を呼び出すことができます。

投稿2018/07/22 14:55

keicha_hrs

総合スコア6768

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

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

hood

2018/07/23 11:36 編集

回答ありがとうございます!(これだけお世話になっていたら、どれだけ感謝の言葉を並べても足りまないと思いつつ・・・) 今回もカチッとピースがはまりました。まさか前回ご教授していただいた‘getActivity()‘が解決の鍵だったとは・・・ 「メソッドが赤くなったら、そのメソッドを持つクラスを調べ、自activityやfragmentがその調べたクラスを継承しているか調べる。」 今まで私にはこの視点が欠けていたと思います。前回と今回でそれに気づかされました。今後は同じような轍を踏まないようにしたいです! それでは! 本当にありがとうございました!このご恩はお年寄りになるまで忘れません!(多分・・・)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問