web-dev-qa-db-ja.com

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

エラーが発生するのはどこが間違っているのか教えてください。

私は、そのアクティビティの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回ほどクリーニングして再構築しましたが、それでも問題が発生します。

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

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

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

36
prakash

私の状態では、原因はintTextViewパラメーターを使用していました。例を示しましょう

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

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

これは、このようにintStringに変換することで修正できます。

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

intを記述すると、記述しているテキストではなくリソースが必要です。したがって、AndroidでintStringとして設定する場合は注意してください。

202
Yekmer Simsek

レイアウトを明示的に設定しているので、Androidが自動的に回転を処理するようにするため、/ layout-landではなくデフォルトの/ layoutフォルダーに配置することをお勧めします。

11
mbwasi

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

8
Ashish Kumar

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

Android {
    ...
    buildToolsVersion "19.0.1"
    ...

最新のビルドツールバージョン(25.0.1)に更新し、プロジェクトを同期しましたが、すべて正常でした。

2
Tash Pemhiwa

インポートが正しいことを確認してください。 Rがローカルのファイルではなく、AndroidシステムRファイルを指しているという同様の問題がありました。

2
Ray Benjamin

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

textview.setText(intvalue + "");

または

textView.setText(String.valueOf(intValue));
2
Danish Ajaib

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

2
Arslan Mehboob

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

ファイルres/xml/data.xmlがあり、次のようなResourcesクラスでロードしようとしました:

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

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

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

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

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

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

1
wolwe

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

currectText.setText(progress);

ただし、パラメータが文字列ではない場合は、

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

したがって、パラメータを文字列として作成します。 「+」演算子を使用するだけで簡単です

currectText.setText(""+progress);

文字列の問題解決に変換されたsetTextメソッドでintを渡す

Integerの場合の2番目のオプション

currectText.setText(String.valueOf(progress));
1
android_jain

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

0
CoolMind

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.
}

Eclipse:プロジェクト>クリーン

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

うるさい。

0
Hubert

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

0
Prakash

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

0
Rben