android.content.res.Resourcesを取得する$ NotFoundException:リソースがアンドロイドに存在する場合でも例外

私が誤りを起こすために間違っている場所を教えてください。

私はそのアクティビティの1つがランドスケープモードのみであるアプリケーションを作成しています。そこで、 AndroidManifest.xml ファイルに以下を追加しました


私は次のようなフォルダを作成しました。

/res/layout-land

そこにsee_today_landscape_layoutというレイアウトを追加します。

onCreate()に次のコードを追加しました

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

しかし、私は私のアプリを実行すると、私は次のエラーが表示されます

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

私は R.java をチェックし、例外が探しているID 7f03002bのリソースを持っていて、そこに存在しています...

私はきれいにして5回のプロジェクトを再構築しますが、それでも問題が発生します。

奇妙な点は、これが昨日働いていて、今日は機能していないということです。コードは同じです。

64
はい、R.javaのsee_today_landscape_layout.xmlを参照しています
追加された 著者 Nik,
v7:22.2.0 'のままにしておくと、この問題は compile' com.android.support:appcompat-v7:23.4.0 '
追加された 著者 surfer190,
追加された 著者 rds,
リソースID#0x7f03002bは何を参照していますか? see_today_landscape_layout.xml ファイルのコンテンツを提供する必要があります。
追加された 著者 a.ch.,

17 答え

私の条件では、原因は TextView int パラメータです。私に例を挙げてみましょう

int i = 5;
myTextView.setText(i);

上記のエラー情報を取得します。

これは、 int を次のように String に変換することで修正できます

myTextView.setText(String.valueOf(i));

int を書くと、あなたは書いているテキストではなく、リソースを期待します。したがって、 int をAndroidの String として設定することには注意してください。

185
追加された
ありがとう、それは働いた、私はこのようにしようとしていた:num2.setText(lotteryCharacters.charAt(2));次にnum2.setText(String.valueOf(lotteryCharacters.charAt(2))); ..に変更&zwnj ;そしてそれは働いた!
追加された 著者 TharakaNirmana,
全く予期しない、大きなキャッチ!ありがとう
追加された 著者 gunjot singh,
これは完璧な答えです!どうもありがとうございます!!!
追加された 著者 Paolo Mastrangelo,
ありがとうございました!!! "" + i はもちろん動作します。
追加された 著者 cayhorstmann,
thx、それは本当に予想外でした。あなたは私の日を救った。(働く)
追加された 著者 Ravi Vaniya,
私はvalueOf(i)と "" + iの違いは何ですか?
追加された 著者 peterb,
ありがとう、その理由は、setTextはStringとresourceの両方を受け入れるオーバーロードされたメソッドです。次に、リソースIDを探すintを渡します。
追加された 著者 abedfar,
XAMLコードについてはどうすれば値を設定できますか?私の場合は、XAMLのプロパティの小数値を設定する必要があります
追加された 著者 zquanghoangz,
これは私の問題を解決しました!愚かな私:D
追加された 著者 Mahmood,
私はtextviewにテキストとしてcharを設定することで同じエラーが発生しました。これで修正されました。
追加された 著者 marts,
  1. in eclipse, go to Project > Clean...
  2. select your project, then press OK
  3. relaunch the app

それが再び起きた場合は、r.javaファイルを削除してください。自動的に生成されます。

29
追加された
私が前に言及したように...私はbinとgenのフォルダをクリアし、アプリケーションを再構築しました。まだ動作しません...
追加された 著者 Nik,
これで問題が解決しなかった場合、なぜチェックマークがつきましたか?
追加された 著者 IcedDante,
@oseiskarありがとう、しかし私のためには動作しません
追加された 著者 Konstantin Konopko,
このソリューションは動作しません(Androidスタジオ)
追加された 著者 delive,
Androidスタジオ:ファイル - > Invalidate Caches/Restart ...
追加された 著者 oseiskar,

レイアウトを明示的に設定しているので、/ layout-landにないデフォルト/ layoutフォルダに入れてみるといいかもしれません。

11
追加された
私もこれを試しました...しかし、それは肖像画を見る
追加された 著者 Nik,
私は私の質問で ' のように言いました。
追加された 著者 Nik,
電話機が縦向きに表示されている場合は、横向きになるように電話機を回転させると縦向きになります。あなたは常にそれを風景にしようとしていますか?次に、マニフェストファイルまたはコード内のアクティビティの向きをランドスケープに設定します。この質問を参照してください。> stackoverflow.com/questions/2150287/…
追加された 著者 mbwasi,
あなたはconfigchangesの部分を欠いている
追加された 著者 mbwasi,

レイアウトXMLを res/layout-land から res/layout フォルダに移動してみてください

8
追加された
レイアウトフォルダ
追加された 著者 Robert,
xmlを res/layout-sw600dp から res/layout に移動しました。
追加された 著者 Shylendra Madda,
私にも何度も起こった
追加された 著者 Markos Evlogimenos,
res/layout-land >> res/layoutフォルダから
追加された 著者 Ashish Kumar,

これは、あなたのコードが資産を持っていない電話の別の言語のために起こります。たとえば、preferences.xmlがxml-enに置かれていて、フランス語が選択されている電話でアプリを実行しようとすると、アプリがクラッシュします。

2
追加された
常にデフォルトのアセットフォルダを作成し、言語またはオリエンテーション固有のフォルダを追加します。これは、ここではそうかもしれないし、そうでないかもしれないが)
追加された 著者 Ahmad Ali Nasir,

私の場合、私のビルドツールのバージョンは、古いビルドで古いバージョンのappモジュールのbuild.gradleに入っていました。それを更新することで問題が解決しました。

android {
    ...
    buildToolsVersion "19.0.1"
    ...

最新のビルドツールバージョン(25.0.1)に更新され、プロジェクトが同期され、すべてがうまくいきました。

2
追加された

今日私は同じことに遭遇しました。私の場合、私はFirebaseデータベースから整数値を読み込み、それを整数に変換せずにTextViewのsetText()に渡していました。 だからちょうど使用:

textview.setText(intvalue + "");

または

textView.setText(String.valueOf(intValue));
2
追加された

インポートが正しいことを確認してください。私は R がAndroidシステムの R ファイルを指していたのと同じ問題を抱えていました。

2
追加された

それは答えを受け入れても、私は別の答えを持っています。ほとんどの場合、表示するテキストを割り当てるときに発生します。例えば ​​。

currectText.setText(progress);

パラメータが文字列でない場合、それはあなたに与えます

android.content.res.Resources$NotFoundException: String resource ID 

パラメータを文字列として作成します。 '+'演算子を使うだけで簡単です

currectText.setText(""+progress);

文字列に変換されたばかりのsetTextメソッドでintを渡す問題が解決されました。

2nd options if it is Integer

currectText.setText(String.valueOf(progress));
1
追加された
最も歓迎仲間
追加された 著者 android_jain,
正確に - 私の問題を解決した!!!!!!!!!!!!!!!
追加された 著者 Björn Hallström,

私はもう一つの理由からこのエラーを受けました:

res/xml/data.xml というファイルがあり、このように Resources クラスをロードしようとしていました。

Resources.getSystem().getXml(R.xml.data);

しかし、これは間違っています。 Resources.getSystem()メソッドは、システムリソースのみへのアクセスを提供するグローバル共有リソースオブジェクトを返します。

正しい方法は次のとおりです(アクティビティ内から)。

this.getResources().getXml(R.xml.data);
1
追加された

これはまたいくつかの問題を引き起こす可能性があります: 私のレイアウトのうちの1つが私のタブレットリソースフォルダに格納されていたので、電話レイアウトのみでこのエラーが発生しました。電話機のレイアウトには、適切なレイアウトファイルがありませんでした。

レイアウトファイルを正しい標準フォルダに移動し、次のプロジェクトを再構築した後、もう一度作業しました。

1
追加された
詳細については、 stackoverflow.com/help/how-to-answer をご覧ください。
追加された 著者 Rich Benner,
さて、問題をより明確に説明しようとしました。 :)
追加された 著者 wolwe,

この方法で修正しました:

リソースディレクトリ名 "drawable-nodpi" にフォルダを作成し、このディレクトリ内のすべてのリソースを他のdrawableディレクトリから移動します。

今すぐあなたのプロジェクトをきれいにして、再構築してください。うまくいけば、今度は何のリソースも見つからない例外なく実行されます。

0
追加された

プロジェクト内でフォルダ build を削除しました。 Android Studioでクリーニングして再構築した後。次に、build.gradleとAndroidManifestのエラーを修正しました。

0
追加された

あなたはあなたのXMLで画面の向きを横に設定しました。このファイルを生成するためにeclipseを使用していた場合、res/layout-land/folderの下に作成されます。ポートレートモードでアクティビティを開くと、アプリケーションはres/layout-port/。 あなたがポートレートモードのためのxmlを持っていなかったらあなたのアプリケーションはクラッシュします。

0
追加された

Eclipse: Project > Clean

私のために働いた。私は、他のアプリから新しいアプリにレイアウトをコピーするときに、これを取得することがよくあります。

煩わしい。

0
追加された

あなたが指しているRが正しいものであることを確認してください。私はこの問題に非常に似ていましたが、プロジェクトではなくSystem Rファイルを指しているインポートがEclipseに挿入されました。それは頭が掻き回された。お役に立てれば。

0
追加された

getInt( "ID")を使用してOne Intentからバンドルデータにアクセスしようとしたときにこのエラーが発生しました。

getString( "ID")を使って解決しました。

アクティビティ1から

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

On Activity B,

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data"));//This solved the problem.
}
0
追加された
あなたの答えをサポートするためにいくつかの詳細と説明を追加することを考慮してください。他の人に役立ちます
追加された 著者 Souvik Ghosh,
これがどのように問題を解決するのか説明するためにあなたの答えを更新し、この5年前の質問がすでに持っているupvotedと受け入れられた答えを改善してください。 良い答えを書くにはどうすればいいですかを参照してください。
追加された 著者 FluffyKitten,