изменить содержимое webview с помощью кнопки Next / Previous?

#android #webview #reload

#Android #webview #перезагрузка

Вопрос:

У меня есть 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()  " > المنقذ");
    }
}
  

Комментарии:

1. просто загрузите или установите второй HTML-файл в тот же webview, и он будет работать

2. вы можете добавить следующую кнопку в свой файл html1 и перейти к html2, используя функциональность htlm

Ответ №1:

Создайте кнопки Next и Previous в своей деятельности и just change the url of webview on button click.

Комментарии:

1. если вы пытались это сделать, опубликуйте свой код в своем вопросе

2. в противном случае очистите кэш этого webview. и загрузить снова

Ответ №2:

Объявить поверх вашего Activity :

 private int currentWebPageIndex;
  

Затем, когда вы нажимаете next / prev, вы добавляете / удаляете значение из индекса, например

 currentWebPageIndex  /currentWebPageIndex--
  

Итак, у вас может быть такой метод, как

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

    // load url depending on currentWebPageIndex
}
  

Комментарии:

1. моя проблема в // load url в зависимости от currentWebPageIndex мне не повезло с воображением; моя проблема техническая..

2. Но вам удалось загрузить ulr один раз? Итак, вы знаете, как это сделать.

3. Например, если currentWebpageIndex == 0, загрузите url1, если == 1, загрузите url2 и так далее для всех типов страниц, которые вы хотите загрузить. чувствуешь меня?