如何保存Webview片段的状态?

时间:2016-05-08 03:42:27

标签: android android-fragments webview android-spinner

我有一个Webview片段,但所有片段只在一个活动中。所提出的问题都不能满足我的需求,因为它们都涉及多个活动。如果我有两个片段都有Webview,我怎么能保存一个Webview的状态,而我看另一个。

public class New_Main extends AppCompatActivity {


FloatingActionButton FAB;
InterstitialAd mInterstitialAd;

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

    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-2782489082981141/4483575512");

    AdRequest adRequest = new AdRequest.Builder().build();

    mInterstitialAd.loadAd(adRequest);

    mInterstitialAd.setAdListener(new AdListener(){
        @Override
        public void onAdLoaded(){

            if (mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
            }
        }

        @Override
        public void onAdOpened(){

        }

        @Override
        public void onAdFailedToLoad(int errorCode){

        }
    });


    FAB = (FloatingActionButton) findViewById(R.id.fab);
    FAB.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Uri link = Uri.parse("https://quizlet.com/");
            Intent intent = new Intent();
            intent = new Intent(Intent.ACTION_VIEW, link);
            String title = "Open Quizlet With:";
            startActivity(intent);
        }
    });


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);

    // Setup spinner
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    spinner.setAdapter(new MyAdapter(
            toolbar.getContext(),
            new String[]{
                    "iNow",
                    "Moodle",
                    "Grade Calculator",
                    "Chalkable",
            }));

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            // When the given dropdown item is selected, show its contents in the
            // container view.


             getSupportFragmentManager().beginTransaction()
                     .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
                     .commit();
        }


        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }

    });



}





@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_new__main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {

        return true;
    }

    return super.onOptionsItemSelected(item);
}


private static class MyAdapter extends ArrayAdapter<String> implements ThemedSpinnerAdapter {
    private final ThemedSpinnerAdapter.Helper mDropDownHelper;

    public MyAdapter(Context context, String[] objects) {
        super(context, android.R.layout.simple_list_item_1, objects);
        mDropDownHelper = new ThemedSpinnerAdapter.Helper(context);
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        View view;

        if (convertView == null) {
            // Inflate the drop down using the helper's LayoutInflater
            LayoutInflater inflater = mDropDownHelper.getDropDownViewInflater();
            view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
        } else {
            view = convertView;
        }

        TextView textView = (TextView) view.findViewById(android.R.id.text1);
        textView.setText(getItem(position));

        return view;
    }

    @Override
    public Theme getDropDownViewTheme() {
        return mDropDownHelper.getDropDownViewTheme();
    }

    @Override
    public void setDropDownViewTheme(Theme theme) {
        mDropDownHelper.setDropDownViewTheme(theme);
    }
}


/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */



    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }


    private class SSLTolerentWebViewClient extends WebViewClient {

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed(); // Ignore SSL certificate errors
        }

    }




    View view;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {




            view = inflater.inflate(R.layout.fragment_new__main, container, false);
            WebView myWebView = (WebView) view.findViewById(R.id.webview);




            AdView mAdView = (AdView) view.findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder().build();
            mAdView.loadAd(adRequest);


            myWebView.setWebViewClient(new SSLTolerentWebViewClient());
            WebSettings webSettings = myWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webSettings.setDomStorageEnabled(true);
            webSettings.setAllowContentAccess(true);
            webSettings.setAllowFileAccess(true);
            webSettings.setAppCacheEnabled(true);
            webSettings.setDatabaseEnabled(true);
            webSettings.setSaveFormData(true);
            webSettings.setBuiltInZoomControls(true);

            int section = getArguments().getInt(ARG_SECTION_NUMBER);


            if (section == 1) {


                myWebView.loadUrl("https://sis-limestoneco.chalkableinformationnow.com/InformationNow/Login.aspx?ReturnUrl=%2finformationnow");

                return view;
            } else if (section == 2) {
                myWebView.loadUrl("http://moodle.lcsk12.org/login/index.php");
                return view;
            } else if (section == 4) {
                myWebView.loadUrl("https://classroom.chalkable.com/Home/student.aspx");
            }
            return view;
    }
}

}

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

    private WebView webView;
    private Bundle webViewBundle;



   @Override
   public void onPause()
   {
      super.onPause();
      webViewBundle = new Bundle();
      webView.saveState(webViewBundle);
   }

@Override
protected void onCreate(Bundle webViewBundle ) {
    super.onCreate(webViewBundle );
      if (webViewBundle != null)
      {
        webView.restoreState(webViewBundle);
      }
 }