2017-10-16 71 views
0

我需要保留和恢復搜索結果,同時通過覆蓋onSaveInstanceStateonRestoreInstanceState旋轉屏幕...我不知道如何做到這一點以及在何處使用它。屏幕旋轉 - 如何覆蓋onSaveInstanceState和onRestoreInstanceState?

有人對此有所瞭解?

這是在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); 

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

回答

0

保存URL搜索結果的JSON /在savedInstanceState XML。當旋轉屏幕測試,如果結果savedInstanceState

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

哪裏exacly我已經把這段代碼存在嗎?這是MainActivity的其餘部分 –

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