1

昨夜、コードは正常に動作していましたが、今日ロードすると、コードでアクセスする生のリソースが、生のフォルダー内の xml ファイルではなく、文字列を指す ID から読み取ろうとしています。

http://www.statman.info/conversions/hexadecimal.htmlを使用してリソース ID を追跡し、それらを R hex ID と照合しました。0x7f040002 にアクセスする必要があるのに、何らかの理由で 7f060000 にアクセスしていることがわかります。 .

私はすでに見ました: Androidで間違った生リソースにアクセスする

私は次のすべてを行いました:

  1. クリーン、リビルド、実行。
  2. R の削除、Eclipse の再起動、クリーンアップ、再構築、実行
  3. Rを削除し、すぐにクリーンアップして再構築し、再起動します
  4. Gen Folder + 上記のすべてを削除するという UmbySlipKnot のアイデア。
  5. Android.R がどこにも使用されていないことを確認します。
  6. 呼び出して使用することを期待している実際のリソース ID を出力しました (期待される ID を正しく返します!):

int resId=con.getResources().getIdentifier("raw_tsn_xml_amina_simple","raw",con.getPackageName());

また、プロジェクトを完全にゼロから再構築しました。私が何をしても、入力ストリームを参照するリソースIDとして常にアプリ名を取得しています-ソース

これらのどれも私にとってはうまくいきませんでした...他に何ができるか考えている人はいますか?

私が気づいたことを示すために画像も追加しました:

デバッグ スニペット: ここに画像の説明を入力

Android R ファイル スニペット: ここに画像の説明を入力

4

3 に答える 3

1

どうやら、Eclipse デバッガーは期待したほど信頼性が高くないようです。

デバッガーで作業しているときに、リソース ID が正しく検出されていることに気付きましたが、実際にデバッガーを調べてみると、inputStream が別のソースから構築されているように見えました。

それが私のコードがクラッシュする理由だと思っていましたが、そうではありませんでした。

私は SIMPLE xml Android ライブラリを使用しています - 渡す xml が予期しない/無効な形式である場合、作成したデータ モデルを構築できません(私の XML は無効だったので、クラッシュしました)。

ロールバックして、追加した新しい XMLが実行をクラッシュさせたことに気付きました。

デバッガーがクランクアウトしました... 物事が null でないときに null を返し、ログが正しい値を出力している場合でも異なる値を表示します!

このハプニングを見たとき、私はいつものようにデバッガを信頼しなくなりました。

私のアドバイス : このページの簡単な解決策がうまくいかない場合は、次の手順を実行してください。

  1. 最初にコードの追加を疑ってください! 追加したものが突然作業コードを壊す場合、それはおそらくあなた自身のエラーです。

  2. デバッガーの動作がおかしい場合は、有用なログ情報を出力して (はるかに高速です)、適切な場所に適切な情報を提供します。

これらは、問題の根本を見つけるために私が行った正確な手順です。

于 2013-06-11T18:23:01.987 に答える
1

Gen フォルダーを削除して再生成してみてください。その後、もう一度やり直してください。

于 2013-06-04T15:11:31.890 に答える