in my app im using gridview when in portrait mode it shows one column. in landscape mode new layout defined to show 2 column.

this is how the app works.. when app is launched, progress dialog is called to load website name from sqlite database and async is used to load website from sqlite db. the progress dialog is dismissed after the gridview is inflated.

now after loading the website name into gridview the screen orientation changes, it restarts the progress dialog.

i know that on screen orientation change the ondestroy() and then oncreate() are called.

this is my app's src code.

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();
        }

        }
      }

SO how do we use onsavedinstance() over here.. please can anyone guide me.

有帮助吗?

解决方案

add this in menifest file

  android:configChanges="keyboardHidden|orientation|screenSize"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top