我有2个活动:在第一个活动中,用户设置了他的名字,然后单击“下一步”以打开第二个活动,以更新其个人资料图片。 我想要的是,如果他决定回去编辑他的名字,并且如果他已经选择了一张图片,则将他选择的图片保存到图像视图中的状态。 当前发生的情况是,如果我单击返回,然后再次单击,图像视图将设置回默认的个人资料图片图标。
我尝试使用SharedPreferences,但是我必须做错了事:
..........
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_picture);
LoadPreferences();
}
@Override
public void onBackPressed() {
SavePreferences();
super.onBackPressed();
}
private void SavePreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("state", backButton.isEnabled());
editor.commit();
}
private void LoadPreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
Boolean state = sharedPreferences.getBoolean("state", true);
backButton.setEnabled(state);
}
}
我是一个初学者,但是我觉得这里基本上有错误的代码,但是我找不到。
答案 0 :(得分:1)
您正在使用共享首选项,以为它会保存活动状态,但是您的所有代码都会保存后退按钮的状态以及是否启用该功能。尝试保存要保留的详细信息,例如名称和保存照片的引用。
例如,如果您有一个EditText,其中用户键入他们的姓名,请尝试以下操作:
ALTER PROCEDURE [dbo].[psGetReprintNLot]
@codOrder VARCHAR(15)
AS
BEGIN
SET NOCOUNT ON;
--SELECT DISTINCT codPackedBatch as codPackedBatch
--FROM PackedOrder
--INNER JOIN [Order] ON PackedOrder.codOrder = [Order].codOrder
--WHERE (PackedOrder.codOrder = @codOrder or @codOrder IS NULL)
--AND Right([PackedOrder].codPackedBatch,1) <> 8 order by codPackedBatch Asc
SELECT DISTINCT codPackedBatch AS codPackedBatch
FROM PackedOrder
WHERE (PackedOrder.codPackedOrder = @codOrder OR @codOrder IS NULL)
AND RIGHT([PackedOrder].codPackedBatch, 1) <> 8
ORDER BY codPackedBatch ASC
IF @@Error <> 0
RETURN -1
ELSE
RETURN 0
SET NOCOUNT OFF
END
然后在活动的onResume中获取值并再次填充视图:
String name = yourEditText.getText().toString();
SharedPreferences preferences =PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name", name);
editor.apply();