簡體   English   中英

Android-從互聯網加載(更新)字符串資源?

[英]Android - Loading (updating) string resources from internet?

我希望能夠從互聯網更新字符串。 假設我在哈希圖中下載了更新的字符串列表,每個字符串都映射到其id(R.string。)。 我以為我可以修改string.xml,但是我猜它們是寫在岩石上的。

如何在填充內容時替換視圖的字符串並使用更新的列表? 目前,我嘗試了兩件事。

首先,我為我的活動創建了一個自定義getResources,它返回一個帶有修改過的getString的自定義資源對象。 但是,活動充氣器可能未使用getResources(),因此沒有任何變化。

之后,我以為我可以覆蓋按鈕等的setText方法,但是由於某些原因它們是最終的。

還有其他建議嗎? 我想使這個過程自動化,否則會很難。 (我什至可以找到哪個視圖使用哪個ID?也許我可以解析資源XML)

謝謝大家

使用數據庫或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();

更新

好,我知道了。 然后,您應該像這樣創建自己的擴展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發生重新排序。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM