保存并加载使用的图像

时间:2018-10-10 20:39:26

标签: java android android-studio sharedpreferences

我有一个测试应用程序,可以更改按钮上的图像。 我的测试应用程序应具有3个功能。  1.单击图像按钮时,将按钮上的背景图像从图像0更改为图像1。(我可以做到) 当您单击保存按钮时,应记录图像在图像按钮上的位置。 (我不能这样做)  重新启动应用程序时,单击加载按钮时,图像应显示在图像按钮上,该图像是使用保存按钮保存的。

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btnSave:
            saveText();
            break;
        case R.id.btnLoad:
            loadText();
            break;
        case R.id.cardButton:
            cardButton.setImageResource(R.drawable.n01);
            cardButton.setTag(R.drawable.n01);
            Integer resource = (Integer)cardButton.getTag();
        default:
            break;
    }
}
void saveText() {
    sPref = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor ed = sPref.edit();
    "some code"
    ed.apply();
    Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show();
}
void loadText() {
    sPref = getPreferences(MODE_PRIVATE);
    "some code"
    Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show();
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,有多种情况可供考虑。

  1. 如果我们在活动中使用单个首选项,那么我们将使用getPreferences()方法来获取共享的Preferences,否则我们将使用getSharedPreferences()方法。要查看更多信息,请参阅:https://developer.android.com/training/data-storage/shared-preferences
  2. 要保存到共享的“首选项”中,我们应该使用editor.apply()方法还是editor.commit()方法查看更多内容,请参考:What's the difference between commit() and apply() in Shared Preference。 在这里,a建议您使用editor.commit()方法,以便获得将值保存到共享首选项中的响应。

还有一件事情是,如果您想将imageId保存在共享的“首选项”中,则必须首先获取将其保存在“首选项”中的图像资源ID。喜欢:

 ImageView imageView = (ImageView)findViewById(R.id..imageName);
int imageid = getResourceId(this,"profiles","drawable", getPackageName());
//save this imageid into your shareedPreferences and getback when you return.
// set this image id into the imageVire
imageView.setImageResouce(imageid);

public static int gerResourceId(context context, String variableName, String resourceName, String pakageName) throws RuntimeException{
     return context.getResources().getIdentifier( variableName, resourceName, pakageName);
}

如果需要任何其他帮助,那么非常欢迎,我希望做正确的共享首选项流程,并且仅在其余代码可以正常工作时,此问题才能解决。谢谢。