【问题标题】:How to use Sharedpreference to store an int?如何使用 Sharedpreference 来存储 int?
【发布时间】:2014-09-18 20:43:34
【问题描述】:

我尝试使用 sharedpreference 来存储一个 int,该 int 会根据用户选择的内容更改它的 id,我不知道如何存储用户选择的内容以及如何读取它,我现在主要关心的是如何存储我稍后会弄清楚如何阅读,但请有人告诉我如何解决这个问题。

这是我的 MainActivity:

  public class MainActivity extends Activity implements OnClickListener {

static int tophone;
ImageView display;


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

    tophone = R.drawable.iv1;
    display = (ImageView) findViewById(R.id.IView);
    ImageView image1 = (ImageView) findViewById(R.id.iv1);
    ImageView image2 = (ImageView) findViewById(R.id.iv2);
    ImageView image3 = (ImageView) findViewById(R.id.iv3);
    ImageView image4 = (ImageView) findViewById(R.id.iv4);
    Button setWp = (Button) findViewById(R.id.setWp);

    image1.setOnClickListener(this);
    image2.setOnClickListener(this);
    image3.setOnClickListener(this);
    image4.setOnClickListener(this);
    setWp.setOnClickListener(this);

}


@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()){
    case R.id.iv1:
        display.setImageResource(R.drawable.iv1);
        tophone = R.drawable.iv1;
        break;
    case R.id.iv2:
        display.setImageResource(R.drawable.iv2);
        tophone = R.drawable.iv2;
        break;
    case R.id.iv3:
        display.setImageResource(R.drawable.iv3);
        tophone = R.drawable.iv3;
        break;
    case R.id.iv4:
        display.setImageResource(R.drawable.iv4);
        tophone = R.drawable.iv4;
        break;
    case R.id.setWp:
        Toast WpSet = Toast.makeText(MainActivity.this,"Wallpaper Set", Toast.LENGTH_SHORT);

        DisplayMetrics metrics = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int height = metrics.heightPixels; 
        int width = metrics.widthPixels;
        Bitmap tempbitMap = BitmapFactory.decodeResource(getResources(), tophone);
        Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
        WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
        wallpaperManager.setWallpaperOffsetSteps(1, 1);
        wallpaperManager.suggestDesiredDimensions(width, height);
        try {
          wallpaperManager.setBitmap(bitmap);
          } catch (IOException e) {
          e.printStackTrace();
        }
        WpSet.show();
        break;

如您所见,我想存储“tophone”图像的 id。 我想存储 id,以便我可以在广播接收器中引用它。 提前致谢

【问题讨论】:

  • 您用来尝试将其存储在 SharedPrefs 中的代码在哪里?
  • “int tophone”@codeMagic
  • 但是你说你已经尝试使用 SharedPrefs 但你没有显示任何代码表明这样可以让我们告诉你你做错了什么。如果您只是想要一个示例,那么 Internet 和文档上有很多。
  • 我建议你应用适当的缩进。它使您的代码更易于阅读。
  • 一团糟,所以我删除了所有的 sharedprefs 代码@codeMagic

标签: java android eclipse sharedpreferences


【解决方案1】:

给你的小例子:

设置:

SharedPreferences sp = getSharedPreferences("myPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("your_int_key", yourIntValue);
editor.commit();

获取:

 SharedPreferences sp = getSharedPreferences("myPrefs", Activity.MODE_PRIVATE);
 int myIntValue = sp.getInt("your_int_key", 0);

BroadReceiver 中从SharedPrefs 获取int 值:

您可以使用来自onReceive(Context context, Intent arg1)BroadReceiver 的上下文。

@Override
 public void onReceive(Context context, Intent arg1)
 {
     SharedPreferences sp = context.getSharedPreferences("myPrefs",Context.MODE_PRIVATE);                                                  
 } 

【讨论】:

  • 只是名称,例如“数量”、“大小”
  • 表示广播接收器中没有使用sp的本地值
  • 请编辑您的代码并展示您如何尝试从首选项中获取数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多