スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Activity 状態の保存、復元

Activity 状態ジョウタイ保存ホゾン復元フクゲン
端末タンマツカタムけたりするとActivityが再起動サイキドウし、アタイ初期化ショキカされますが、
onSaveInstanceState、onRestoreInstanceStateをOverrideすることで状態ジョウタイ保存ホゾン復元フクゲン可能カノウとなります。
ランダムな画像ガゾウ表示ヒョウジし、端末タンマツ再起動サイキドウサイに、onSaveInstanceStateで現在ゲンザイ画像ガゾウIDを保持ホジし、
再起動サイキドウのonRestoreInstanceStateで保持ホジしたIDを抽出チュウシュツします。
端末タンマツカタム
○main.xml
ランダムに画像ガゾウ表示ヒョウジするButtonと画像ガゾウ表示ヒョウジするImageViewを配置ハイチします。
1:                              
2:    
3: android:orientation="vertical" android:layout_width="fill_parent"  
4:   android:layout_height="fill_parent">    
5:  
6:   android:layout_height="wrap_content" android:text="button" />    
7:  
8:   android:layout_height="wrap_content" />    
9:  
10:                                                    
○Activity
状態ジョウタイ保存ホゾンに「onSaveInstanceState」、復元フクゲンに「onRestoreInstanceState」をオーバーライドします。
1: package sample.activity;                                      
2:    
3: import java.util.Random;  
4:    
5: import android.app.Activity;  
6: import android.os.Bundle;    
7: import android.util.Log;  
8: import android.view.View;    
9: import android.widget.Button;  
10: import android.widget.ImageView;    
11:  
12: public class ActivitySample1 extends Activity {    
13:  
14:   int[] image = new int[] { R.drawable.img1, R.drawable.img2,   //画像ガゾウリスト    
15: R.drawable.img3, R.drawable.img4 };  
16:   ImageView iv = null;    
17: int nowImage = 0;  
18:    
19: @Override  
20:   public void onCreate(Bundle savedInstanceState) {    
21: super.onCreate(savedInstanceState);  
22:   setContentView(R.layout.main);    
23:  
24:   iv = (ImageView) findViewById(R.id.img1);    
25:  
26:   ((Button) findViewById(R.id.btn1))    
27: .setOnClickListener(new View.OnClickListener() {  
28:   @Override    
29: public void onClick(View v) {  
30:   nowImage = image[Math.abs(new Random().nextInt())    
31: % image.length];  
32:   iv.setImageResource(nowImage);    
33: }  
34:   });    
35: }  
36:    
37: @Override  
38:   public void onSaveInstanceState(Bundle outState) {      
39: super.onSaveInstanceState(outState);  
40:   Log.d("sample", "onSaveInstanceState");    
41: outState.putInt("image", nowImage);  
42:   }    
43:  
44:   @Override    
45: public void onRestoreInstanceState(Bundle savedInstanceState) {  
46:   super.onRestoreInstanceState(savedInstanceState);    
47: Log.d("sample", "onRestoreInstanceState");  
48:   if (savedInstanceState != null) {    
49: iv.setImageResource(savedInstanceState.getInt("image"));  
50:   }    
51: }  
52:    
53: }  
54:                                                    
①ButtonにClickイベントを追加ツイカ。ランダムに画像ガゾウ配置ハイチする。
②Activityの状態ジョウタイ保持ホジするonSaveInstanceStateをオーバーライドします。
引数ヒキスウのBundle変数ヘンスウに、Key、Valueでアタイ保持ホジします。
復元フクゲンオコナうためのonRestoreInstanceStateをオーバーライドします。
引数ヒキスウのBundle変数ヘンスウから、保持ホジしたアタイ取得シュトクします。
○ライフサイクルの確認カクニン
再起動サイキドウ、onPauseのマエにonSaveInstanceStateが実行ジッコウされます。
その、onResumeマエにonRestoreInstanceStateが実行ジッコウされます。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
スポンサーサイト

テーマ : android
ジャンル : コンピュータ

コメントの投稿

非公開コメント

おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。