データベースまたは sharedPreferences を使用して文字列の値を保持し、デフォルトの R.string.bla_bla として使用します。これにより、リソースを変更する方法がなく、アプリ全体を更新することができなくなります。文字列を読み取るには、次のようなものを試してください。
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences( context );
String bla_bla = mSharedPreferences.getString( "R.string.bla_bla", context.getString( R.string.bla_bla ));
そして値を置き換えるには:
Editor editor = PreferenceManager.getDefaultSharedPreferences( context ).edit();
editor.putString( "R.string.bla_bla", bla_bla );
editor.commit();
更新しました
はい、分かりました。次に、このような独自のクラス extends を作成する必要がありますButton
。
public class MButton extends Button {
String mText;
public MButton( Context context, AttributeSet attrs ) {
super( context, attrs );
loadText( context, attrs );
}
public MButton( Context context, AttributeSet attrs, int defStyle ) {
super( context, attrs, defStyle );
loadText( context, attrs );
}
void loadText( Context context, AttributeSet attrs ) {
String stringId = attrs.getAttributeValue( "http://schemas.android.com/apk/res/android", "text" );
// stringId = @2130903040
int intStringId = Integer.parseInt( stringId.substring( 1 ));
// intStringId = 2130903040
mText = PreferenceManager.getDefaultSharedPreferences( context ).getString( stringId, context.getString( intStringId ));
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
setText( mText );
}
}
そして、あなたのレイアウトでそれを使用してください:
<com.example.test.MButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:onClick="clicked" />
ただし、すべての SharedPreferences をクリーンアップしてカスタム文字列を保持していることを確認してください。アプリを更新すると、リソース ID が並べ替えられます。幸運を!