2016-07-29 65 views
0

我看了,并尝试不同的方法,所以我绝对做错了什么。从另一个活动的sharedpreferences中检索radiogroup选择?

我在“磅”或“千克”的主要活动中有一个radiogroup选择。无论他们选择哪个收音机,都应在下一个活动中更改为该文本。

Lbs是当前的默认无线电,并被选中为“true”。

我已经在第二个活动中放置了一个按钮返回到收音机选择屏幕。但是,选择“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()方法中的发射活动作为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中获取值。

像上面这样会帮助你。

相关问题