【问题标题】:change webview content with button Next/Previous?使用按钮 Next/Previous 更改 webview 内容?
【发布时间】:2017-02-21 05:33:22
【问题描述】:

我有一个 webView,其中包含 assets/1.html 中的一些内容,我想创建一个 button(下一个按钮)来将我的 webView 的内容更改为 assets/2.html 等等。

怎么做?

PS 我用Intent 完成了它并重新创建了我的Activity,但我认为这不是一个好的解决方案,我只希望webView 重新加载而不是全部Activity: )

这是我的 NextStory() 函数:

    public void nextStory(View view) {

    int iExtra = Integer.parseInt(extra) + 1;

    if(iExtra<=10) {
        String sExtra = Integer.toString(iExtra);
        webView.loadUrl("file:///android_asset/"+sExtra+".htm");

    } else {
        inflater = getLayoutInflater();
        layout = inflater.inflate(R.layout.toast,
                (ViewGroup) findViewById(R.id.toast_root));

        text = (TextView) layout.findViewById(R.id.text);
        text.setText("لقد وصلت لنهاية الكتاب!");

        toast = new Toast(getApplicationContext());
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(layout);
        toast.show();
    }
}

这是我的 onCreate() 函数:

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

    textView = (TextView)findViewById(R.id.textView3);

    Typeface face = Typeface.createFromAsset(getAssets(),
            "fonts/arabicfont.otf");
    textView.setTypeface(face);

    webView = (WebView)this.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);

    intent = getIntent();

    //this intent tag is for start reading position
    extra = intent.getExtras().getString("EXTRA");

    //this colorId is selected from previous Activity to change color acording to user's needs
    colorId = intent.getIntExtra("COLOR_EXTRA", colorId);

    Linear1 = (LinearLayout)findViewById(R.id.Linear1);
    Relative1 = (RelativeLayout)findViewById(R.id.Relative1);
    Linear1.setBackgroundResource(colorId);
    Relative1.setBackgroundResource(colorId);

    if(extra.equals("0")) {
        webView.loadUrl("file:///android_asset/1.htm");
        textView.setText(textView.getText().toString()+ " > توطئة");

    } else if(extra.equals("1")) {
        webView.loadUrl("file:///android_asset/2.htm");
        textView.setText(textView.getText().toString()+ " > الكآبة الخرساء");

    } else if(extra.equals("2")) {
        webView.loadUrl("file:///android_asset/3.htm");
        textView.setText(textView.getText().toString()+ " > يد القضاء");

    } else if(extra.equals("3")) {
        webView.loadUrl("file:///android_asset/4.htm");
        textView.setText(textView.getText().toString()+ " > في باب الهيكل");

    } else if(extra.equals("4")) {
        webView.loadUrl("file:///android_asset/5.htm");
        textView.setText(textView.getText().toString()+ " > الشعلة البيضاء");

    } else if(extra.equals("5")) {
        webView.loadUrl("file:///android_asset/6.htm");
        textView.setText(textView.getText().toString()+ " > العاصفة");

    } else if(extra.equals("6")) {
        webView.loadUrl("file:///android_asset/7.htm");
        textView.setText(textView.getText().toString()+ " > بحيرة النار");

    } else if(extra.equals("7")) {
        webView.loadUrl("file:///android_asset/8.htm");
        textView.setText(textView.getText().toString()+ " > أمام عرش الموت");

    } else if(extra.equals("8")) {
        webView.loadUrl("file:///android_asset/9.htm");
        textView.setText(textView.getText().toString()+ " > عشتروت والمسيح");

    } else if(extra.equals("9")) {
        webView.loadUrl("file:///android_asset/10.htm");
        textView.setText(textView.getText().toString()+ " > التضحية");

    } else if(extra.equals("10")) {
        webView.loadUrl("file:///android_asset/11.htm");
        textView.setText(textView.getText().toString()+ " > المنقذ");
    }
}

【问题讨论】:

  • 兄弟只需将第二个 html 文件加载或设置为相同的 webview 即可工作
  • 您可以在 html1 文件中添加下一个按钮,并可以使用 htlm 功能导航到 html2

标签: android webview reload


【解决方案1】:

在您的Activity 上声明:

private int currentWebPageIndex;

然后,当您按下下一个/上一个时,您可以从索引中添加/删除一个值,例如

currentWebPageIndex++/currentWebPageIndex--

所以你可以有一个类似的方法

private void pressedButton(boolean next){
    if(next){
       currentWebPageIndex++;
    } else {
       currentWebPageIndex--;
    }

    // load url depending on currentWebPageIndex
}

【讨论】:

  • 我的问题在于 // 根据 currentWebPageIndex 加载 url 我没有想象力;我的问题是技术问题..
  • 但是你已经成功加载了一次ulr?所以你知道该怎么做。
  • 例如,如果 currentWebpageIndex == 0,则加载 url1,如果 == 1,则加载 url2,以此类推,用于您要加载的所有类型的页面。感觉到我了吗?
【解决方案2】:

在您的活动和just change the url of webview on button click.

中创建下一个上一个按钮

【讨论】:

  • 如果您尝试过这样做,请在您的问题中发布您的代码
  • 否则清除该 webview 的缓存。并再次加载
猜你喜欢
  • 2013-12-12
  • 1970-01-01
  • 2015-02-27
  • 2017-04-28
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多