使用数据库或 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 将被重新排序。祝你好运!