1

アクティビティの設定にトグルボタンの値を保存できるように、sharedPreferences を使用することにしました。私の主なアクティビティでは、ユーザーが設定アクティビティの Twitter ボタンをクリックしたときに、Twitter ボタンを非表示にしたいと考えています。

    private SharedPreferences prefs;
private String prefName = "MyPref";
private ToggleButton timer, twitter;
// this is the key used to set the timer to visible or hidden
private static final String TIMER_KEY = "timekey";
private static final String TWITTER_KEY= "tweet";
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preferences);
        timer = (ToggleButton)findViewById(R.id.timer_pref);
        twitter =(ToggleButton)findViewById(R.id.twitter_pref);
        timer.setChecked(true);
        twitter.setChecked(true);
       // Toast.makeText(Preferences.this, timer, Toast.LENGTH_SHORT).show();
        Button b = (Button) findViewById(R.id.home_btn);
        b.setOnClickListener(new View.OnClickListener()
        {
        // now add the new screen


            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                // get the shared perference data





                Intent i = new Intent(Preferences.this, AndroidGUIActivity.class);
                startActivity(i);

            }
        });

         twitter.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

            prefs = getSharedPreferences("MyPref", 0 );
                SharedPreferences.Editor editor = prefs.edit();

                if (timer.isChecked() == true)
                {
                editor.putBoolean("twitterButtonStatus", true);
                }
                else if(timer.isChecked() == false)
                {
                    editor.putBoolean("twitterButtonStatus", false);    
                }


                // now save the value that is passed to the editor.putBoolean function
                // the twitter data hase been saved
                editor.commit();

                // now store the variable so that it can be copied to another activity
                Bundle b = new Bundle();


            }
        });
4

1 に答える 1

1

インテントを使用したアクティビティを通じてプリファレンスを転送する必要はありません。

「共有」設定には、どのアクティビティからでもアクセスできます。

内部に文字列キーを使用してボタンのステータスを配置するだけです。

SharedPreferences settings = getSharedPreferences("MyPrefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("twitterButtonStatus", buttonStatus);

別のアクティビティでは、文字列キー ("twitterButtonStatus") を使用してこれらの設定を取得します。

SharedPreferences settings = getSharedPreferences("MyPrefs", 0);
boolean buttonStatus = settings.getBoolean("twitterButtonStatus", false);  // second param is default! 

参照: http://developer.android.com/guide/topics/data/data-storage.html

編集:

今、SharedPrefs を保存しています。それらを元に戻し、Button Gone を設定するには、次のようにします。

SharedPreferences settings = getSharedPreferences(prefName, 0);
boolean buttonStatus = settings.getBoolean(TWITTER_KEY, true);  //2nd is default
if(buttonstatus==false) twitter.setVisibility(View.GONE);
于 2012-05-11T20:28:13.910 に答える