1

先週から、保存された設定に関する奇妙な問題に直面しています。

私はアンドロイド互換のボードに取り組んでいます。

私が直面している実際の問題は、

4 つのボタンがあり、ボタンをクリックすると、ボタンの背景画像が変更されます

Onfirstclick - >ボタンの背景画像を強調表示に変更 - > 2回目のクリック - >通常の背景画像に変更し、最初の実行では通常の背景ボタン画像を保持しています

しかし、共有設定を使用しているにもかかわらず、再起動時にボタンの背景画像が作業ボードに保存されません。

ボードを再起動するためのオン/オフ用の電源ボタンがあります。

ボードを再起動した後に取得する必要があるその画像をonclickに持っている画像(通常/強調表示)

良いことは、

           the code is working perfectly in android mobile but not in my board

これは私のコードです。

どんな助けでも大歓迎です。

   public class SharedprefsActivity extends Activity  {

    protected static final String TAG = "HvacActivity";
    /** Called when the activity is first created. */
    private Button seatdirnbtn;
    private SharedPreferences prefs;
    private String prefName = "MyPref";
    private SharedPreferences.Editor editor;
    private boolean isclick;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        seatdirnbtn = (Button) findViewById(R.id.seatdirnbtn);      
        seatdirnbtn.setOnClickListener(listner1);       
    }

    public void onResume() {
        super.onResume();
        getPrefAndButtonState();        
    }

    public void onPause() {
        super.onPause();
        setPrefAndButtonState();
    }

    @Override
    public void onRestart() {
        super.onRestart();
        getPrefAndButtonState();
    }

    @Override
    public void onStop() {
        super.onStop();
        setPrefAndButtonState();
    }

    public void getPrefAndButtonState(){
        prefs = this.getSharedPreferences(prefName, MODE_PRIVATE);
        isclick = prefs.getBoolean("prefName", false);
        System.out.println("bool? " + isclick);
        if (isclick) {
            seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
        } else if (!isclick) {
            seatdirnbtn.setBackgroundResource(R.drawable.icon4);
        }
    }

    public void setPrefAndButtonState(){
        editor = prefs.edit();
        editor.putBoolean("prefName", isclick);
        editor.commit();        
        getPrefAndButtonState();
    }

    private View.OnClickListener listner1 = new View.OnClickListener() {    
        public void onClick(View v) {   
            if (isclick) {
                isclick = false;
                setPrefAndButtonState();            
            } else if (!isclick) {
                isclick = true;
                setPrefAndButtonState();
            }   
        }
    };
}
4

1 に答える 1

2

getApplicationContext()次の代わりに使用してみてくださいthis

メソッド内setPrefAndButtonState:

public void setPrefAndButtonState(){
      prefs = getApplicationContext().
                getSharedPreferences(prefName, MODE_PRIVATE); <<missing this line
      editor = prefs.edit();
      editor.putBoolean("prefName", isclick);
      editor.commit();        
      getPrefAndButtonState();
    }

そしてgetPrefAndButtonState方法で

public void getPrefAndButtonState(){
    prefs = getApplicationContext().getSharedPreferences(prefName, MODE_PRIVATE);
    isclick = prefs.getBoolean("prefName", false);
    System.out.println("bool? " + isclick);
    if (isclick) {
        seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
    } else if (!isclick) {
        seatdirnbtn.setBackgroundResource(R.drawable.icon4);
    }
}
于 2012-12-21T08:45:59.937 に答える