7

すべての質問に目を通しましたが、うまくいきません。

文字列の値を使用して AppWidgets レイアウトを設定したい (したがって、文字列を変更するだけでレイアウトを別のものに切り替えることができます)。

String NoteString = "R.layout.widget_blue".toString();

int resID = context.getResources().getIdentifier(NoteString, "layout", context.getPackageName());

RemoteViews views = new RemoteViews(context.getPackageName(), resID);

なぜ機能しないのかわからない、ウィジェットは単に「ウィジェットの読み込みに問題があります」と言っています..

これはうまくいきます:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_blue);

ありがとう

4

3 に答える 3

18

文字列コンポーネントからリソースIDを構築するgetIdentifier()には、完全修飾IDを単一のパラメーターとしてではなく、個々のコンポーネントをに渡す必要があります。

//Get the ID for R.layout.widget_blue
int resID = context.getResources().getIdentifier("widget_blue", "layout", context.getPackageName());

次に、最初のパラメータ名を変更して、別のレイアウトリソースを取得します。

于 2012-12-17T21:54:46.730 に答える
1

なぜこれに getIdentifier を使用しているのですか? とにかくハードコードされた文字列をそこに含めているので、2番目の例で行ったように、とにかく含まれているリソース識別子を使用しないでください。getIdentifier() メソッドに関するドキュメントに記載されているように、これははるかに効率的です。

注: この関数の使用は推奨されません。名前でリソースを取得するよりも、識別子でリソースを取得する方がはるかに効率的です。

于 2012-12-17T21:58:20.657 に答える