次のように、独自のカスタム DialogPreference サブクラスを実装しています。
public class MyCustomPreference extends DialogPreference
{
private static final String androidns = "http://schemas.android.com/apk/res/android";
private String mDialogMsg;
public MyCustomPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
mDialogMsg = attrs.getAttributeValue(androidns, "dialogMessage");
...
}
...
}
ご覧のとおり、dialogMessage
XML 属性を取得してメンバー変数に保存しますmDialogMsg
。
私の問題は次dialogMessage
のとおりです。現在のコードでは、 XML 属性を XML の文字列リソース ID として指定することはできません。
言い換えれば、これは機能します:
android:dialogMessage="Hello world!"
しかし、これはしません:
android:dialogMessage="@string/hello_world"
XML でリソース ID として指定すると、リソース IDはmDialogMsg
文字列リソース自体ではなくに保存されます。今、私はできることを知っています:
context.getString(attrs.getAttributeValue(androidns, "dialogMessage"))
しかし、その場合、ユーザーは XML に通常の文字列 (つまり、非リソース ID) を入力できなくなります。ユーザーに両方を実行するオプションを提供したいと思います。どうすればいいですか?