2016-07-29 16 views
0

Ich habe verschiedene Methoden angeschaut und ausprobiert, damit ich definitiv etwas falsch mache.Radiogroup-Auswahl aus geteilten Präferenzen in einer anderen Aktivität abrufen?

Ich habe eine Radiogruppe in der Haupttätigkeit von "Pfund" oder "Kilogramm". Welches Radio sie auch wählen, sollte in der nächsten Aktivität zu diesem Text wechseln.

Lbs ist das aktuelle Standard-Radio und das wird als "wahr" überprüft.

Ich habe eine Taste in der zweiten Aktivität platziert, um zurück zum Radio-Auswahlbildschirm zu gehen. Nach der Auswahl von "kgs" wird jedoch weiterhin "lbs" angezeigt.

Hauptaktivität

@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); 
    } 
} 

Antwort

0

Erstellen Sie eine Klasse, die als SharedPreferences benannt und dass ein Verfahren init machen und Vorlieben gibt initialisieren unten: -

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(); 
    } 
} 

und Init-Methode von SharedPreferences in Launcher Aktivität rufen als SharedPreferences.init() und make Getter Setter in Einstellungen wie folgt: -

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

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

und wenn Sie Gewicht einstellen möchten, rufen Sie SharedPreferences.setWeight(ed.getText.toString()); und erhalten Sie Wert mit SharedPreferences.getWeight();. Sie können Wert von jedem, wo innerhalb der Anwendung das einzige, was Sie tun müssen, rufen Sie init() Methode auf Launcher-Aktivität und verwenden Sie Wert und Wert in sharedPreferences Wert.

Tun Sie wie oben, es wird Ihnen helfen.

Verwandte Themen