2014-09-18 59 views
1

我试图使用sharedpreference存储一个int,该int根据用户选择改变它的id,我不知道如何存储用户选择的以及如何读取它,我现在主要关心的是如何要存储我会想出如何阅读它,但请有人告诉我如何解决这个问题。如何使用Sharedpreference来存储int?

这里是我的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,以便我可以在广播回忆器中引用它。 在此先感谢

+0

您正在使用的代码尝试并将其存储在SharedPrefs中? – codeMagic 2014-09-18 20:45:35

+0

“int tophone”@codeMagic – 2014-09-18 20:47:03

+0

但是你说你已经尝试使用SharedPrefs,但是你没有显示任何代码,以便我们告诉你你做错了什么。如果你只是想要一个例子,那么互联网和文档上就有很多。 – codeMagic 2014-09-18 20:47:56

回答

4

你小例子:

集:

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值:

你可以使用的上下文的BroadReceiver

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

什么是int键? – 2014-09-18 20:48:43

+0

只是名称为例如“金额”,“大小” – 2014-09-18 20:50:55

+0

如何在我的broadcastreciever阅读它 – 2014-09-18 20:54:18