Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SoloWay
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 291
1

Работа с webview

26.05.2017, 18:20. Просмотров 327. Ответов 5
Метки нет (Все метки)

Добрый день! Пишу приложение с двумя activity. На первом находится несколько imagebutton, на втором активити, webview.
При нажатии на одну из кнопок должен осуществляться переход на определенный Url в webView. Но при нажатии на кнопку приложение вылетает вообще.
Код первого активити:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
            ImageButton phbtn = (ImageButton) findViewById(R.id.ib1);
 
 phbtn.setOnClickListener(new View.OnClickListener(){
 
    public void onClick(View v)
    {
        WebView webv = (WebView) findViewById(R.id.wv);
      
        webv.loadUrl("http://www.mail.ru");
 
       Intent intent = new Intent(MainActivity.this, WvActivity.class);
      
 
        startActivity(intent);
 
 
    }
});
}
. Может попытаться передавать url через intent.putExtra? Опять же так как кнопок несколько и url разные, как webView будет отлавливать нажатие и переходить по нужным url. Как быть? Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2017, 18:20
Ответы с готовыми решениями:

Работа с webview
Привет ребята! У меня следующая проблема. for (String key : map.keySet()) { ...

Работа WebView. Скрипты
Всем добрый день! Буквально недавно начал разрабатывать приложение на андроид. Как среду...

Webview
Всем привет.У меня вопросище. Или я так привык к шарпику, что разобраться совсем тяжко. Поехали,...

WebView
У меня есть лист меню, как сделать так что бы при нажатии на первый объект так можно сказать...

WebView
Добрый день! Мне нужно выполнить действие после полной загрузки страницы в WebView. Нужно что-то...

5
Vladimirys
318 / 213 / 29
Регистрация: 16.01.2010
Сообщений: 621
26.05.2017, 19:25 2
Цитата Сообщение от SoloWay Посмотреть сообщение
Но при нажатии на кнопку приложение вылетает вообще.
Приложение не просто вылетает, оно еще и пишет кое - чего в лог. Выкладываете что у вас там.
P.S. Для начала, проверьте разрешения в манифесте на использование сети.
P.P.S. И вот так не надо делать.
Java
1
2
3
4
5
6
7
public void onClick(View v)
    {
      WebView webv = (WebView) findViewById(R.id.wv);
      
      .......
 
    }
В onCreate()перенести.
Ну раз такое дело, то и проверить обе ли активности в манифесте прописаны..
И вообще все выкладывайте, все что написали.
0
SoloWay
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 291
26.05.2017, 19:57  [ТС] 3
Вот логи:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.txa.kmas, PID: 20427
java.lang.NullPointerException
at com.example.txa.kmas.MainActivity$1.onClick(MainActivity.java:44)
at android.view.View.performClick(View.java:4560)
at android.view.View$PerformClick.run(View.java:18636)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5021)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
at dalvik.system.NativeStart.main(Native Method)

Код 1го активити:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.example.txa.kmas;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebChromeClient;
import android.widget.ImageButton;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.*;
import android.net.Uri;
 
 
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      //  requestWindowFeature(Window.FEATURE_NO_TITLE);
      //  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
 
        ImageButton phbtn = (ImageButton) findViewById(R.id.ib1);
        ImageButton crmbtn = (ImageButton) findViewById(R.id.ib2);
        ImageButton corona = (ImageButton) findViewById(R.id.ib3);
        ImageButton kindex = (ImageButton) findViewById(R.id.ib4);
        ImageButton rtmbtn = (ImageButton) findViewById(R.id.ib5);
        ImageButton ptrbtn = (ImageButton) findViewById(R.id.ib6);
        //setContentView(R.layout.activity_main);
 
 
       phbtn.setOnClickListener(new View.OnClickListener(){
 
    public void onClick(View v)
    {
        WebView webv = (WebView) findViewById(R.id.wv);
 
       // WebSettings webSettings = webv.getSettings();
       // webSettings.setJavaScriptEnabled(true);
      //  webv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webv.loadUrl("http://www.mail.ru");
 
       Intent intent = new Intent(MainActivity.this, WvActivity.class);
 
 
 
      
        startActivity(intent);
 
 
 
    }
});
}
}
Код 2го активити

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.txa.kmas;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebChromeClient;
import android.webkit.*;
 
public class WvActivity extends AppCompatActivity {
private WebView wv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wv);
 
 
        wv = (WebView)findViewById(R.id.wv);
       // включаем поддержку JavaScript
       wv.getSettings().setJavaScriptEnabled(true);
 
    }
}
Манифест

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.txa.kmas">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
 
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".WvActivity">
        </activity>
    </application>
 
</manifest>
0
Vladimirys
318 / 213 / 29
Регистрация: 16.01.2010
Сообщений: 621
26.05.2017, 20:40 4
Ага.
А зачем вам на первой активити WebView? Там это не нужно.
WebView должен быть во второй активити. (если я правильно понял ваше условие)
Вообще более менее стандартный способ использования WebView примерно такой.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Doc extends Activity {
    private WebView mWebView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.doc);
 
        mWebView = (WebView) findViewById(R.id.webView);
        mWebView.setWebViewClient(new MyWebViewClient());
        // включаем поддержку JavaScript
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        // указываем страницу загрузки
        mWebView.loadUrl("");
 
    }
    public class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().length() == 0) {
                return false;
            }
 
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            view.getContext().startActivity(intent);
            return true;
        }
 
    }
 
    @Override
    public void onBackPressed() {
        if (mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}
Вот такая вот примерно должна быть ваша вторая активность. А адрес, передаете из первой. "Стрингой" например.
1
SoloWay
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 291
26.05.2017, 22:19  [ТС] 5
Спасибо) Буду экспериментировать.
0
Mail-up
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
28.05.2017, 13:03 6
Как вариант кидать PutExtra или же сделать ImageButton в RV и передавать значение по GetAdapterPosition
0
28.05.2017, 13:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2017, 13:03

WebView - Height
Добрый вечер. Вот такая пробела. Когда я передаю информацию в WebView он почему выводится...

Gif в WebView
В одном известном браузере просмотр гиф реализован так: статическая картинка (фрейм), после клика...

WebView. Крякозябры
WebView myWebView = (WebView) findViewById(R.id.webView); String summary = &quot;&lt;html&gt;&lt;body&gt;&quot; + text...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru