屏幕旋转 - 如何覆盖onSaveInstanceState和onRestoreInstanceState?

时间:2017-10-16 16:06:23

标签: java

我需要通过覆盖onSaveInstanceStateonRestoreInstanceState来旋转屏幕来保留和恢复搜索结果...我不知道如何操作以及在何处使用它

有人对此有所了解吗?

这是MainActivity的一部分:

public class MainActivity extends AppCompatActivity {

    private static final String LOG_TAG = MainActivity.class.getName();

    /**
     * URL for book data from the Google books dataset
     */
    private static final String G_BOOKS_REQUEST_URL =
            "https://www.googleapis.com/books/v1/volumes?q=";

    /**
     * Adapter for the list of books
     */

    private BookAdapter mAdapter;


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

..............

2 个答案:

答案 0 :(得分:0)

将URL搜索结果json / xml保存在savedInstanceState中。当旋转屏幕测试时,如果结果存在于savedInstanceState

savedInstanceState.putString("result", <serach result json/xml>);

答案 1 :(得分:0)

 final EditText searchTextView = (EditText) findViewById(R.id.search_bar);
        Button searchButton = (Button) findViewById(R.id.search_button);
        ListView bookListView = (ListView) findViewById(R.id.list);
        mAdapter = new BookAdapter(this, new ArrayList<Book>());
        bookListView.setAdapter(mAdapter);
        bookListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Book currentBook = mAdapter.getItem(position);
                Uri bookUri = Uri.parse(currentBook.getmUrl());
                Intent websiteIntent = new Intent(Intent.ACTION_VIEW, bookUri);
                startActivity(websiteIntent);
            }
        });
        searchButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                    String newQuery = searchTextView.getText().toString();
                    BookAsyncTask task = new BookAsyncTask();
                    task.execute(G_BOOKS_REQUEST_URL + newQuery);
            }
        });
    }

        @Override
        protected List<Book> doInBackground(String... urls) {
            // Don't perform the request if there are no URLs, or the first URL is null
            if (urls.length < 1 || urls[0] == null) {
                return null;
            }

            List<Book> result = QueryUtils.fetchBookData(urls[0]);
            return result;
        }
        @Override
        protected void onPostExecute(List<Book> data) {
            mAdapter.clear();
            if (data != null && !data.isEmpty()) {
                mAdapter.addAll(data);
            }
        }
    }
}