2014-09-26 65 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(); 
     } 
    };