2014-09-26 66 views
0

我有一个像下面这样的活动。在这个活动中,我有超过10张图片。图像随着下一个和后退按钮而改变。我想保存这个活动的状态。例如,如果我处于第5张图片并关闭了该活动或应用程序。现在,当我开始活动或应用程序时,它从第一张图片开始,而不是从第五张图片开始。它应该从我已经离开它的第五张图像开始。请帮助我编写代码或编辑我的代码。如何保存一个活动的状态

int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 /// so on}; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
    iButton = (Button) findViewById(R.id.bNext); 
    gButton = (Button) findViewById(R.id.bPrev); 
     //Just set one Click listener for the image 
    iButton.setOnClickListener(iButtonChangeImageListener); 
    gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
    //Increase Counter to move to next Image 
     currentImage++; 
     currentImage = currentImage % images.length; 
     hImageViewPic.setImageResource(images[currentImage]); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
    public void onClick(View v) { 
    //Increase Counter to move to next Image 
    currentImage--; 
    currentImage = (currentImage + images.length) % images.length; 
    hImageViewPic.setImageResource(images[currentImage]); 
    } 
    }; 

请注意代码。

+0

尝试使用SharedPreferences存储图像的最后位置。 – 2014-09-26 06:57:54

+0

感谢回复。请你编辑我的代码。我不是软件开发人员。 – margino 2014-09-26 07:02:28

回答

0
int currentImage; 
    int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 /// so on}; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    SharedPreferences settings = this.getSharedPreferences("imageNumber", 0); 
    if(settings != null){ 
      currentImage= settings .getInt("lastImage", 0); 
    } 
    hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
    iButton = (Button) findViewById(R.id.bNext); 
    gButton = (Button) findViewById(R.id.bPrev); 
     //Just set one Click listener for the image 
    iButton.setOnClickListener(iButtonChangeImageListener); 
    gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
    //Increase Counter to move to next Image 
     currentImage++; 
     currentImage = currentImage % images.length; 
     hImageViewPic.setImageResource(images[currentImage]); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
    public void onClick(View v) { 
    //Increase Counter to move to next Image 
    currentImage--; 
    currentImage = (currentImage + images.length) % images.length; 
    hImageViewPic.setImageResource(images[currentImage]); 
    } 
    }; 

在的onPause方法:

@Override 
protected void onPause(){ 
    super.onPause(); 
    SharedPreferences settings = getSharedPreferences("imageNumber", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("lastImage",currentImage ); 
    editor.commit(); 
} 
+0

你好亲爱的在一些情况下onStop()不会被调用,所以你不能写这个代码。 – 2014-09-26 07:16:02

+0

@Haresh Chhelana你好为什么onStop不被调用? '在某些情况下onStop()不叫'你能告诉我这些情况吗?根据Android文档它总是被调用。 – mmlooloo 2014-09-26 07:17:03

+0

当系统内存不足时,onStop()未被调用。 – 2014-09-26 07:22:39

0

尝试使用SharedPreferences来存储您的上一个图像位置。

private ImageView hImageViewPic; 
    private Button iButton; 
    private Button gButton; 

    private SharedPreferences sharedPreferences; 

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

     hImageViewPic = (ImageView) findViewById(R.id.idImageViewPic); 
     iButton = (Button) findViewById(R.id.bNext); 
     gButton = (Button) findViewById(R.id.bPrev); 

     sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); 

     hImageViewPic.setImageResource(images[sharedPreferences.getInt("LastSeenImagePosition", 0)]); 
     //Just set one Click listener for the image 
     iButton.setOnClickListener(iButtonChangeImageListener); 
     gButton.setOnClickListener(gButtonChangeImageListener); 
    } 
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
      //Increase Counter to move to next Image 
      currentImage++; 
      currentImage = currentImage % images.length; 
      hImageViewPic.setImageResource(images[currentImage]); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putBoolean("LastSeenImagePosition", currentImage); 
      editor.commit(); 
     } 
    }; 
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
     public void onClick(View v) { 
      //Increase Counter to move to next Image 
      currentImage--; 
      currentImage = (currentImage + images.length) % images.length; 
      hImageViewPic.setImageResource(images[currentImage]); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putBoolean("LastSeenImagePosition", currentImage); 
      editor.commit(); 
     } 
    };