2013-08-29 13 views
0

期間sqlite的數據記錄使用的GridView 當在縱向模式下它顯示一列。 以橫向模式定義的新佈局顯示2列。保留在我的應用程序的IM屏幕方向變化

這是應用程序如何運作.. 當應用程序啓動時,進度對話框被稱爲從SQLite數據庫和異步加載網頁的名字被用來從sqlite的分貝加載網頁。在網格視圖充氣後,進度對話框被解除。

現在將網站名加載到gridview後,屏幕方向發生變化,它重新啓動進度對話框

我知道在屏幕方向改變ondestroy(),然後oncreate()被調用。

這是我的應用程序的src代碼。

public class RSSReaderActivity extends Activity { 

    private ProgressDialog pDialog; 
    ArrayList<HashMap<String, String>> rssFeedList; 
    RSSParser rssParser = new RSSParser(); 
    RSSFeed rssFeed; 
    Button add_rss; 
    // array to trace sqlite ids 
    String[] sqliteIds; 
    public static String TAG_ID = "id"; 
    public static String TAG_TITLE = "title"; 
    public static String TAG_LINK = "link"; 
     GridView gridview; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.site_list); 

     add_rss = (Button) findViewById(R.id.add_rss); 
     gridview = (GridView) findViewById(R.id.gridview); 
     rssFeedList = new ArrayList<HashMap<String, String>>(); 

     new loadStoreSites().execute(); 
     gridview.setOnItemClickListener(new OnItemClickListener() { 
     ... 
     ... 
     ); 

     add_rss.setOnClickListener(new View.OnClickListener() { 
      ... 
      ... 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // if result code 100 
     if (resultCode == 100) { 
      // reload this screen again 
      Intent intent = getIntent(); 
      finish(); 
      startActivity(intent); 
     } 
    } 
    class loadStoreSites extends AsyncTask<String, String, String> { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      ... 
      ... 
     } 
     @Override 
     protected String doInBackground(String... args) { 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
        RSSDatabaseHandler rssDb = new RSSDatabaseHandler(getApplicationContext()); 

        // listing all websites from SQLite 
        List<WebSite> siteList = rssDb.getAllSites(); 

        sqliteIds = new String[siteList.size()]; 

        // loop through each website 
        for (int i = 0; i < siteList.size(); i++) { 

         WebSite s = siteList.get(i); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_ID, s.getId().toString()); 
         map.put(TAG_TITLE, s.getTitle()); 
         map.put(TAG_LINK, s.getLink()); 

         // adding HashList to ArrayList 
         rssFeedList.add(map); 

         // add sqlite id to array 
         // used when deleting a website from sqlite 
         sqliteIds[i] = s.getId().toString(); 
        } 
        gridview.setAdapter(new SimpleAdapter(RSSReaderActivity.this,rssFeedList, R.layout.site_list_row,new String[] { TAG_ID, TAG_TITLE, TAG_LINK },new int[] { R.id.sqlite_id, R.id.title, R.id.link })); 
        registerForContextMenu(gridview); 
       } 
      }); 
      return null; 
     } 

     protected void onPostExecute(String args) { 
      // dismiss the dialog after getting all products 
      pDialog.dismiss(); 
     } 

     } 
     } 

那麼我們如何使用onsavedinstance()在這裏..請任何人都可以指導我。

回答

2

在menifest文件

android:configChanges="keyboardHidden|orientation|screenSize" 
+0

,所以我不添加此必須使用onsavedinstance()和onretaininstance? –

+0

不意味着使用onretaininstance –

+0

謝謝,我不知道它是如此簡單,我浪費了很多我的時間只是添加一些方法爲retaininstance,因爲我在一些答案和指南中看到。謝謝你的幫助! –

相關問題