2011-12-04 24 views
0

私はプログラミング、JavaまたはAndroid開発でそのような初心者ではありませんが、私は奇妙な問題を抱えました:私は非常に高度なアプリケーションを作成し、市場に持っている。Androidリソースが見つかりません例外

今のところ私は1000以上のインストールがあり、ResourceNotFoundExceptionについては4つまたは5つのクラッシュレポートがあります。奇妙なことは、それがクラッシュした行はコードで

setContentView(R.layout.some_custom_layout) 

であることを私はいつも私が

mContext.getResources().getDrawable(mContext.getResources().getIdentifier("some_string", "string", "my.example.package")); 

を考え使用した場合ので、私は疑問に思って

someTxtView.setText(R.string.some_string) 

による資源不足に言及していていますクラッシュは消えますか?

答えて

2

私は同じ問題に直面していましたが、私は「layout-small」というレイアウトフォルダを作成して修正しました。

解像度に基づいて、「layout-large」と「layout-medium」の2つのフォルダしか作成していません。しかし、解像度が低い携帯電話はほとんどなく、解像度ごとに適切なリソースが見つからない場合があります。 Android OSは解像度ごとにxmlリソースをレンダリングします。それは必要なフォルダに移動してリソースを見つけます。

「layout-normal」フォルダに一致する解像度を持つ95%以上のAndroid端末。しかし、依然として解像度の低い携帯電話があります。したがって、この問題が発生しました。詳細は

http://developer.android.com/guide/practices/screens_support.html

はこれで問題がお役に立てば幸いです。

+0

でインポートした場合は、私を助けた回数のDAロットが...これは役立つだろう – user3004826

0

アクティビティのonCreateメソッドからsetContentView(R.layout.some_custom_layout)を呼び出す場合、あなたのアプリケーションがコンパイルされている限り、あなたは良いものでなければなりません。経由して、あなたの文字列リソースにアクセスする私の知る限り

someTxtView.setText(R.string.some_string) 

が進むべき道ではありません。あなたはこれを行うべきである:

getContext().getResources().getString(R.string.some_string) 
+0

コンパイルが奇妙なことは、ほとんどの場合(99%)クラッシュせず、うまくいきます。しかし、このバグに起因するアプリを起動できないユーザーのこの一パーセントがあります。何ができるのだろうと思っています。 – Norbert

+0

いますが、文字列リソース私が述べた方法にアクセスしてみてくださいましたか?私はあなたの文字列にアクセスする方法が間違っていると思います。 –

+0

文字列へのアクセス例は一例だった、私はそれが実際にそこにクラッシュするという報告を見ていません。私はすべての私は、私はそれを試してみて、助けないかどうかを確認します、私はそれが「R」 – Norbert

0

setContentView(R.layout.some_custom_layout); 

除いて私に多くの時間を助けた

setContentView(yourpackagename.R.layout.some_custom_layout); 

を使用してみてください。

+0

は、そのことを考えて決してトラフ使用したリソースIDを使用することをどこにすることを意味しました。ありがとう。 – Norbert

+0

NPノルベルト...:あなたはandroid.R代わりyourPackageName.R – Markonato

+2

だけの時間がある私は、これは古いです知っているが、これには少なくとも3日間を過ごしました問題。どうもありがとうございました。私はそのように簡単に修正することは考えていないだろう – Sojurn

0

私には1つの提案があります。その背景=「@アンドロイド:some_android_drawable /描画可能」とは、例えば、あなたがあなたのレイアウトで、このようなドローアブルか何かのようアンドロイドsecificリソースを、使用

アンドロイドを行い

たぶん、いくつかのベンダーは、いくつかを提供していません。それらのファームウェアでリソースを使用すると、アプリがクラッシュする可能性があります。 たとえばthis issue

0
someTxtView.setText(R.string.some_string) 

ここで、整数値をテキストに設定します。それは正しくこの値のresousreを検索するので、それは正しくない。書く必要があります

someTextView.setText(getResources().getText(R.string.blabla)); 
関連する問題