2016-07-29 6 views
0

私は見て、さまざまな方法を試しましたので、間違いなく間違っています。別のアクティビティのsharedpreferencesからラジオグループの選択を取得しますか?

私は、 "ポンド"または "キログラム"のメインアクティビティでラジオグループを選択しています。どちらのラジオを選択しても、次のアクティビティでそのテキストに変更する必要があります。

Lbsは現在のデフォルトラジオで、「true」とチェックされています。

私はラジオ選択画面に戻るために2番目のアクティビティにボタンを配置しました。しかし、「kgs」を選択した後も、「lbs」を表示し続けます。

主な活動

@Override 
public void onResume() { 
    super.onResume(); 

    SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 
    String enteredWeightState = sharedPreferences.getString("entered_weight", ""); 
    int lbsState = sharedPreferences.getInt("UOM_checkId", UOM_RadioGroup.getCheckedRadioButtonId()); 

    UOM_RadioGroup.check(lbsState); 
    enter_weight_editText.setText(enteredWeightState); 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    UOM_RadioGroup = (RadioGroup) findViewById(R.id.UOM_RadioGroup); 
    enter_weight_editText = (EditText)findViewById(R.id.enter_weight_editText); 

    UOM_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

     public void onCheckedChanged(RadioGroup UOM_RadioGroup, int checkedId) { 

      if (checkedId == R.id.UOM_pounds) { 

       SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putInt("UOM_checkId", checkedId); 
       editor.apply(); 

      } else { 

       SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putInt("UOM_checkId", checkedId); 
       editor.apply(); 
      } 

     } 

    }); 
} 


    public void beginRoutineButton(View view) { 

     SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString("entered_weight", enter_weight_editText.getText().toString()); 
     editor.apply(); 

     Intent intent = new Intent(this, Activity2.class); 
     startActivity(intent); 
    } 

} 



Activity2 

    public TextView unit_of_measure; 
    public View fragment1; 
    public Button backButton; 
    public TextView weight; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_2); 

     weight = (TextView) findViewById(R.id.weight); 
     backButton = (Button) findViewById(R.id.backButton); 
     unit_of_measure = (TextView) findViewById(R.id.unit_of_measure); 

     SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 

     int lbsState = sharedPreferences.getInt("UOM_checkId", -1); 
     String enteredWeightState = sharedPreferences.getString("entered_weight", ""); 


     weight.setText(enteredWeightState); 


     if (lbsState < 0) 
      unit_of_measure.setText("kgs"); 
     else 
      unit_of_measure.setText("lbs"); 


    } 


    public void backButton(View view) { 

     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
    } 
} 

答えて

0

SharedPreferencesとしてという名前のクラスを作成し、その中でinitメソッドを作成し、以下を参照してくださいそこに設定を初期化: -

public class SharedPreferences{ 
    private static Context mContext; 
    private static SharedPreferences preferences = null; 
    private static SharedPreferences.Editor editor; 
    public static void init(Context mContext) { 
     SharedPreferences.mContext = Env.appContext; 
     SharedPreferences.preferences = mContext.getSharedPreferences("user_info", Context.MODE_PRIVATE); 
     SharedPreferences.editor = preferences.edit(); 
    } 
} 

とランチャーの活動にSharedPreferencesのinitメソッドを呼び出しますとし、ゲッターセッターを以下のように設定してください: -

public static void setWeight(String weight){ 
editor.putString("entered_weight", weight).commit(); 
} 

public static String getWeight(){ 
return preferences.getString("entered_weight", null); 
} 

と、ウェイトコールSharedPreferences.setWeight(ed.getText.toString());を設定し、SharedPreferences.getWeight();を使用して値を取得する場合。アプリケーション内のどこからでも価値を得ることができます。唯一必要なことは、ランチャーアクティビティでinit()メソッドを呼び出し、値を保存してsharedPreferences内で値を取得することです。

上記のようにすれば、お手伝いします。

関連する問題