android.content.res.Resources $ NotFoundExceptionの取得:リソースがandroidに存在する場合でも例外


89

エラーが発生する原因を教えてください。

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

<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

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

/ 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回クリーニングして再構築しましたが、それでも問題は発生します。

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


リソースID#0x7f03002bは何を指しますか?see_today_landscape_layout.xmlファイルの内容を提供する必要があります。
a.ch.

はい、R.javaに従ってsee_today_landscape_layout.xmlを参照しています
Nik


アップグレードして使用するcompile 'com.android.support:appcompat-v7:23.4.0'場合、この問題が発生しましv7:22.2.0'
スティーブン2016年

回答:


36
  1. Eclipseで、[プロジェクト]> [クリーン...]に移動します。
  2. プロジェクトを選択し、[OK]を押します
  3. アプリを再起動します

再度発生する場合は、r.javaファイルを削除してください。自動的に生成されます。


2
前に述べたように... binフォルダーとgenフォルダーをクリアし、アプリを再構築しました。それでも機能しません...
Nik

128
これで問題が解決しなかった場合、なぜチェックマークが付いたのですか?
icedDante 2014

1
これがリリースアプリで発生した場合はどうしますか?
ディネッシュ

220

私の状態では、原因はのintパラメータを取っていることでしたTextView。例を示しましょう

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

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

これは、変換することによって固定することができるintためにString、これを好き

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

あなたが書くときint、それはあなたが書いているテキストではなくリソースを期待します。したがって、Androidでをintとして設定する場合は注意が必要Stringです。


おかげで、それはうまくいきました、私はこのようにしようとしていました:num2.setText(lotteryCharacters.charAt(2));、それから私はnum2.setText(String.valueOf(lotteryCharacters.charAt(2)));に変更しました。そしてそれはうまくいきました!
TharakaNirmana 2013年

1
valueOf(i)と "" + iの違いは何ですか?
peterb 2016年

まったく予想外の、大漁!ありがとう
gunjot singh 2016

1
XAMLコードはどうですか、どうすれば値を設定できますか。私の場合は、XAMLのプロパティに10進値を設定する必要があります
zquanghoangz 2016

2
おかげで、その理由は、setTextが文字列とリソースIDの両方を受け入れるオーバーロードされたメソッドであるためです。次に、intを渡して、リソースIDを探します
2017

12

レイアウトを明示的に設定しているので、Androidで自動的に回転を処理する場合は、/ layout-landではなくデフォルトの/ layoutフォルダーに配置してみてください。


1
電話が縦向きの場合は縦向きになり、電話を回転させると横向きになります。あなたはそれを常に風景にしようとしていますか?そして、あなたがマニフェストファイルまたはコードで景観への活動の方向性を設定して何をする必要があるか、この質問を参照stackoverflow.com/questions/2150287/...
mbwasi

質問で述べたように、「<activity android:name = "。LandScapeImageActivity" android:screenOrientation = "landscape"> </ activity>」
Nik

1
configchangesの部分がありません<activityandroid:screenOrientation = "landscape" android:configChanges = "orientation | keyboardHidden" android:name = "abcActivty" />
mbwasi 2012


2

これは、コードにアセットがない電話の言語が異なるために発生する可能性があります。たとえば、preference.xmlがxml-enに配置されていて、フランス語が選択されている電話でアプリを実行しようとすると、アプリがクラッシュします。


常にデフォルトのアセットフォルダを作成してから、言語または方向に固有のフォルダを追加します。これはここでは当てはまるかもしれないしそうでないかもしれませんが:)
Ahmad Ali Nasir 2014年

2

私はさらに別の理由からこのエラーを受け取りました:

私はファイルを持っていて、次のようなクラスでres/xml/data.xmlそれをロードしようとしていましたResources

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

ただし、メソッドResources.getSystem()はシステムリソースのみへのアクセスを提供するグローバル共有リソースオブジェクトを返すため、これは正しくありません。

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

this.getResources().getXml(R.xml.data);

アクティビティから継承しないトップレベルの関数またはクラスからリソースにアクセスするにはどうすればよいですか?
Vivek Yadav

2

私の場合、アプリモジュールのbuild.gradleにあるビルドツールのバージョンが古いプロジェクトで古くなっていました。それを更新すると問題が修正されました:

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

最新のビルドツールバージョン(25.0.1)に更新し、プロジェクトを同期すると、すべてが再び順調に進みました。


2

インポートが正しいことを確認してください。ローカルファイルではなく、RAndroidシステムRファイルを指している場合にも同様の問題が発生しました。


1

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


1

これも問題を引き起こす可能性があります。誤ってレイアウトの1つがタブレットのリソースフォルダに保存されていたため、電話のレイアウトでのみこのエラーが発生しました。電話のレイアウトには、適切なレイアウトファイルがありませんでした。

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


あなたはこのしてくださいについての詳細は提供することができstackoverflow.com/help/how-to-answer
リッチベナー

0

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


0

xmlで画面の向きを横向きに設定しています。Eclipseを使用してこのファイルを生成した場合、res / layout-land /フォルダーの下に作成されますが、Portraitモードでアクティビティを開くと、アプリケーションはres / layout-port /フォルダーまたは通常のres / layout /でxmlを検索します。 。ポートレートモード用のxmlがない場合、アプリケーションはクラッシュします。


0

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

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

次に、プロジェクトをクリーンアップしてから再構築します。もう一度実行してください。今回は、リソースが見つからないという例外なしに機能します。


これは私に正しい道を示しましたが、この投稿を覚えておいてください:stackoverflow.com/questions/24682094/…–
エイドリアン

0

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

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

Activity1から私は持っていた

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

アクティビティ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.
}

1
これが問題をどのように解決するかを説明するためにあなたの答えを更新してください、そしてこの5年前の質問がすでに持っている賛成で受け入れられた答えを改善してください。参照:良い答えを書くにはどうすればよいですか
FluffyKitten 2017年

他の人に役立つように、あなたの答えを裏付けるためにいくつかの詳細と説明を追加することを検討してください
Souvik Ghosh 2017

0

私の場合、キャッシュの無効化と再起動は機能しませんでした。.ideaフォルダーと.gradleフォルダーを削除しました。その場合は、ビルドログなどがなくなる可能性があることを忘れないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.