如何在Android浏览器中实现标签?

时间:2017-08-10 18:25:25

标签: android browser

我正在尝试在Android浏览器中实现标签功能。我试图将网页保存在缓存中,但我无法弄清楚如何保存多个网页并在用户切换标签时加载它们。我怎么能实现这个呢?

当用户想要添加新标签并打开Main_activity时,我想将当前网页保存在缓存中,然后当用户切换标签时,当前网页应保存在缓存中,并且预期选项卡的预期网页将加载到webview中。现在的问题是,我不知道如何在缓存中处理多个网页,并选择在何时加载哪个网页。

我的代码包含两个活动,main_activity带有一些图标,webView_activity带有简单的webview。我正在使用其中包含ListView的自定义对话框,因此我需要为新标签添加新行,并在切换标签时对其进行编辑。

这是我的main_activity

public class MainActivity extends AppCompatActivity {

ImageView yt,google,gm,twitter;
SearchView g_search;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    g_search = (SearchView) findViewById(R.id.g_search);

    g_search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("query",query);
            startActivity(i);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });


    yt = (ImageView) findViewById(R.id.yt);
    google = (ImageView) findViewById(R.id.google);
    gm = (ImageView) findViewById(R.id.gm);
    twitter = (ImageView) findViewById(R.id.twitter);


    yt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("shortcut","https://www.youtube.com");
            startActivity(i);
        }
    });

    google.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("shortcut","https://www.google.com");
            startActivity(i);
        }
    });

    gm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("shortcut","https://www.gmail.com");
            startActivity(i);
        }
    });

    twitter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("shortcut","https://www.twitter.com");
            startActivity(i);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // Inflate menu to add items to action bar if it is present.
    inflater.inflate(R.menu.m1, menu);
    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            Intent i = new Intent(MainActivity.this,webview1.class);
            i.putExtra("query",query);
            startActivity(i);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if(item.getItemId()==R.id.action_new_tab){

    }

    if(item.getItemId()==R.id.action_incognito_mode){

    }

    if(item.getItemId()==R.id.action_bookmarks){

    }

    if(item.getItemId()==R.id.action_history){

    }

    if(item.getItemId()==R.id.action_downloads){

    }

    if(item.getItemId()==R.id.action_settings){

        Intent i = new Intent(MainActivity.this,SettingsActivity.class);
        startActivity(i);

    }

    if(item.getItemId()==R.id.action_about){

        Intent i = new Intent(MainActivity.this,about.class);
        startActivity(i);

    }
    return super.onOptionsItemSelected(item);
}

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;
        }
    }, 2000);
}

}

这是我的web_view活动

public class webview1 extends AppCompatActivity {

CustomWebView web1;
String search_q,shortcut;
FloatingActionButton fab;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_webview1);
    web1 = (CustomWebView) findViewById(R.id.web1);
    web1.setGestureDetector(new GestureDetector(new CustomGestureDetector()));
    web1.setWebViewClient(new WebViewClient(){
        @Override
        public void onReceivedError(final WebView view, int errorCode, String description,
                                    final String failingUrl) {

            fragmentManager.beginTransaction()
                    .replace(R.id.container, new blankState())
                    .commit();

            super.onReceivedError(view, errorCode, description, failingUrl);
        }
    });
    registerForContextMenu(web1);
   // web1.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    web1.getSettings().setJavaScriptEnabled(true);
    web1.getSettings().setBuiltInZoomControls(true);
    web1.getSettings().setDisplayZoomControls(false);
    web1.getSettings().setLoadWithOverviewMode(true);
    web1.getSettings().setUseWideViewPort(true);
    search_q=getIntent().getStringExtra("query");
    shortcut=getIntent().getStringExtra("shortcut");

    bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);

    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setCustomView(R.layout.custom_toolbar);

    ImageView action_back = (ImageView) findViewById(R.id.action_back);
    action_back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

    BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);

    bottomNavigationView.setVisibility(GONE);
    fab = (FloatingActionButton) findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

          // code for launching new tab here

        }
    });

    web1.setWebChromeClient(new WebChromeClient(){
        public void onProgressChanged(WebView view, int progress ){
            frame_layout.setVisibility(View.VISIBLE);
            progress_bar.setProgress(progress);

            if(progress==100){
                frame_layout.setVisibility(GONE);
             srl.setRefreshing(false);
            }
            super.onProgressChanged(view, progress);
        }
    });

    progress_bar.setProgress(0);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if(item.getItemId()==R.id.action_url){
        ShowUrlDialog();
        return true;
    }

    if(item.getItemId()==R.id.action_home){
        Intent i = new Intent(webview1.this,MainActivity.class);
        startActivity(i);
    }

    if(item.getItemId()==R.id.action_new_tab){

    // code to launch new tab here

    }

    if(item.getItemId()==R.id.action_incognito_mode){

    }

    if(item.getItemId()==R.id.action_bookmarks){

    }

    if(item.getItemId()==R.id.action_history){

    }

    if(item.getItemId()==R.id.action_downloads){

    }

    if(item.getItemId()==R.id.action_settings){

        Intent i = new Intent(webview1.this,SettingsActivity.class);
        startActivity(i);

    }

    if(item.getItemId()==R.id.action_about){

        Intent i = new Intent(webview1.this,about.class);
        startActivity(i);

    }



    return super.onOptionsItemSelected(item);
}

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // Inflate menu to add items to action bar if it is present.
    inflater.inflate(R.menu.m2, menu);
    // Associate searchable configuration with the SearchView
    return true;
}

@Override
public void onBackPressed() {
    if (web1.canGoBack()) {
        web1.goBack();
    } else {
        super.onBackPressed();
    }
}

}

0 个答案:

没有答案