現象としては、UnityでAndroid用プラグインを使うときに、リソースを参照するところで
以下のようなエラーが出るというもの。
android.content.res.Resources$NotFoundException: Resource ID #0x7f03000c
もとになったコード↓
View v = this.getLayoutInflater().inflate(R.layout.main, null);
「R.layout.main」には値はちゃんと入っていることは確認できたのに、なぜかエラーになる。
色々調べてみたら、「R.layout.main」を使っていること自体がダメらしい。
Unityフォーラム↓
http://forum.unity3d.com/threads/81943-Resource-Not-Found
代わりに、「Activity.getResources().getIdentifier()」を使うと良いということで先ほどのコードを修正↓
------------------------------------------------
private Resources r;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
【省略】
r = getResources();
View v = this.getLayoutInflater().inflate(
r.getIdentifier("main", "layout", Global.mainActivity.getPackageName()), null);
【省略】
------------------------------------------------
これでうまくいきました。
Android SDKだけで作ったアプリだったら「R.layout.main」の記述でうまくいったのになぁ。
これは気づかなかった。
フォーラムが活発だと、こういう困ったときに助かります!
Globalという独自に作ったクラスをそのまま掲載していました^^;
指摘いただいた点は、自らのパッケージ名を取得するところなので、
Global.mainActivity.getPackageName();
↓
getPackageName();
と変更してみてはいかがでしょうか。
【参考】
http://developer.android.com/reference/android/content/Context.html