Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Gbidon
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 5
#1

Как прикрутить "свой браузер" к странице - "фрагмент" - Программирование Android

28.07.2015, 22:58. Просмотров 613. Ответов 9
Метки нет (Все метки)

здравствуйте. все, уже голову сломал. не соображаю совсем. не получается прикрутить код браузера к странице fragments.выводиться должно на- R.layout.news. обложка программы "боковое слайдер-меню". выдвинул слайдер, там кликнул. загрузилась страница Новости, которая автоматом загружает страницу с сайта.
код News.java который открывает страницу
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.example.pinsklife.pl3.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
import com.example.pinsklife.pl3.R;
public class News extends Fragment {
    public News() {
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.news, container, false);
        return rootView;
    }
}
код браузера, который нужно вставить.
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
package com.example.pinsklife.pl3;
 
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
 
public class BrowserActivityVideo extends ActionBarActivity {
 
    private WebView mWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
 
        mWebView = (WebView) findViewById(R.id.webViewNews);
 
        // включаем поддержку JavaScript
        mWebView.getSettings().setJavaScriptEnabled(true);
 
        // указываем страницу загрузки
        mWebView.loadUrl("http://rambler.ru" );
 
        // запрещаем использование другого браузера
        mWebView.setWebViewClient(new HelloWebViewClient());
 
    }
      // запрещаем использование другого браузера
    private class HelloWebViewClient extends WebViewClient {@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }}
 
    public void onBackPressed() { if(mWebView.canGoBack()) {  mWebView.goBack(); } else {  super.onBackPressed();  }}
}
по отдельности работают. вместе- на экране чистое поле.


код news.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/news"
        android:textAppearance="?android:attr/textAppearanceMedium" />
 
 <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webViewNews"
        android:layout_marginTop="60dp"/>
 
</RelativeLayout>
ну и MainAktivity.java
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
package com.example.pinsklife.pl3;
 
 
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
import com.example.pinsklife.pl3.fragments.Afisha;
import com.example.pinsklife.pl3.fragments.Akcii;
import com.example.pinsklife.pl3.fragments.Glavnaya;
import com.example.pinsklife.pl3.fragments.Kalkulyator;
import com.example.pinsklife.pl3.fragments.Vizitki;
import com.example.pinsklife.pl3.fragments.News;
import com.example.pinsklife.pl3.fragments.Otdih;
import com.example.pinsklife.pl3.fragments.Raspisanie;
import com.example.pinsklife.pl3.fragments.Video;
 
public class MainActivity extends ActionBarActivity {
 
    private String[] mScreenTitles;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
 
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mTitle = mDrawerTitle = getTitle();
        mScreenTitles = getResources().getStringArray(R.array.screen_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
 
        // Set the adapter for the list view
        // Установить адаптер для представления списка
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mScreenTitles));
        // Set the list's click listener
        // Установить список Нажмите на слушателя
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
 
        mDrawerToggle = new ActionBarDrawerToggle(
                this, /* host Activity */
                mDrawerLayout, /* DrawerLayout object */
                R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open, /* "open drawer" description */
                R.string.drawer_close /* "close drawer" description */
        ) {
 
            /** Called when a drawer has settled in a completely closed state.
             * Вызывается, когда векселедатель поселились в полностью закрытом состоянии.*/
            public void onDrawerClosed(View view) {
                getSupportActionBar().setTitle(mTitle);
                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
                                                //создает вызов onPrepareOptionsMenu ()
            }
 
            /** Called when a drawer has settled in a completely open state.
             * Вызывается, когда ящик поселился в полностью открытом состоянии.*/
            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
                                                 // Создает вызов onPrepareOptionsMenu ()
            }
        };
 
        // Set the drawer toggle as the DrawerListener
        // Установить ящик переключения как DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);
 
        // Initialize the first fragment when the application first loads.
        // Инициализировать первый фрагмент, когда первой загрузке приложения.
        if (savedInstanceState == null) {
            selectItem(0);
        }
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu;
        // Накачайте меню;
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
 
    /* Called whenever we call invalidateOptionsMenu()
    Вызывается всякий раз, когда мы называем invalidateOptionsMenu ()*/
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items related to the content view.
        // Если NAV ящик открыт, предметы спрятать действий, связанных с учетом содержания
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_search).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        // Передать событие ActionBarDrawerToggle, если она возвращает
        // Верно, то оно обрабатывается значок сенсорный приложение событие
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action buttons
        // Ручка кнопки действий
        switch(item.getItemId()) {
            case R.id.action_search:
                // Show toast about click.
                // Показать тост о мыши
                Toast.makeText(this, R.string.action_search, Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
 
    /* The click listener for ListView in the navigation drawer
     * Кликните для слушателя ListView в навигационной ящик */
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    }
 
    /** Swaps fragments in the main content view
     * Свопы фрагменты на главном экране содержимому*/
    private void selectItem(int position) {
        // Update the main content by replacing fragments
        // Обновление основное содержание, заменяя фрагменты
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new Glavnaya();
                break;
            case 1:
                fragment = new News();
                break;
            case 2:
                fragment = new Akcii();
                break;
            case 3:
                fragment = new Afisha();
                break;
            case 4:
                fragment = new Otdih();
                break;
            case 5:
                fragment = new Raspisanie();
                break;
            case 6:
                fragment = new Vizitki();
                break;
            case 7:
                fragment = new Video();
                break;
            case 8:
                fragment = new Kalkulyator();
                break;
            default:
                break;
        }
 
        // Insert the fragment by replacing any existing fragment.
// Вставьте фрагмент, заменив все существующие фрагмент
        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame, fragment).commit();
 
            // Highlight the selected item, update the title, and close the drawer
            // Выделить выбранный элемент, обновить название и закройте ящик
            mDrawerList.setItemChecked(position, true);
            setTitle(mScreenTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // Error
            Log.e(this.getClass().getName(), "Error. Fragment is not created");
        }
    }
 
    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getSupportActionBar().setTitle(mTitle);
    }
 
    /**
     * When using the ActionBarDrawerToggle, you must call it during
     * onPostCreate() and onConfigurationChanged()...
     * При использовании ActionBarDrawerToggle, вы должны вызвать его в течение
     ***** * OnPostCreate () и onConfigurationChanged () ...
     */
 
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        // Синхронизация переключения состояние после onRestoreInstanceState произошло.
        mDrawerToggle.syncState();
    }
 
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggles
        // Pass любое изменение конфигурации в ящике переключает
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
 
}
просьба. ногами не пинать. спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2015, 22:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как прикрутить "свой браузер" к странице - "фрагмент" (Программирование Android):

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - &quot;списки_жанров&quot;, &quot;фильмы&quot;, &quot;режиссеры&quot; мне...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio" - Программирование Android
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора данных. Для использования его c WMS. После долгих раздумий было...

При эмулировании вместо надписи "Hello world" отображается "android" - Программирование Android
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил среду, все настроил как на google.developers . Когда...

9
Mikalai
256 / 232 / 94
Регистрация: 11.01.2015
Сообщений: 656
28.07.2015, 23:53 #2
Gbidon, покажи свой вариант кода где "они" вместе и где белый экран.
0
Gbidon
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 5
29.07.2015, 09:01  [ТС] #3
Mikalai, спасибо за внимание.

***************
Как это показать? проще описать.
"белый экран" - выводится только текст (TextView), а интернет страница нет, на ее месте белым-бело.

есть news.xml, имеет идентификатор webViewNews, если использовать только связку BrowserActivityNevs и news (без использования "фрагментного" перехода, т.е. как использование activity_main + MainActivity), все работает- страница сайта открывается.

есть News.java (Fragment), при его активации, он ссылается на R.layout.news. работает без проблем, страница news открывается с выводом заложенного TextView, а вот браузер не подает признаков жизни.

есть BrowserActivityNevs.java (ActionBarActivity), имеет ссылку setContentView(R.layout.news) на идентификатор webViewNews. и тут, как я понимаю, при любом вызове страницы news, она должна делать запрос к данному файлу и выполнить код, получить данные webViewNews и отобразить соответствующий WebView на странице news.

я скорее всего ошибаюсь, но понимаю процесс так. почему не работает?
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
29.07.2015, 09:30 #4
По коду вроде проблем нет, но как я вижу news.java никакой инициализации браузера нет. Вам сейчас необходимо перенести код с BrowserActivityVideo.java в news.java. После того как вы View view = inflater.inflate(R.layout.news, container, false); и перед return view; вы должны инициализировать ваш браузер кодом из BrowserActivityVideo.java
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
29.07.2015, 09:49 #5
Цитата Сообщение от Gbidon Посмотреть сообщение
по отдельности работают. вместе- на экране чистое поле.
Чего-то темните, уважаемый. BrowserActivityVideo нигде у вас не вызывается, а если бы вызывался, то не как фрагмент.
Засувайте vebView во фрагмент и дело в шляпе.

Добавлено через 38 секунд
Bend3r написал уже, я не видел.
0
Gbidon
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 5
29.07.2015, 17:39  [ТС] #6
спасибо. но что-то не идет .
что нужно вставить между
Java
1
2
3
4
       
 View rootView = inflater.inflate(R.layout.news, container,  false);
????
 return rootView;
понимаю- НЕУЧ.

Добавлено через 8 минут
findViewById- красный
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
29.07.2015, 17:54 #7
Цитата Сообщение от Gbidon Посмотреть сообщение
findViewById- красный
а так
Java
1
rootView.findViewById
0
Gbidon
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 5
29.07.2015, 18:20  [ТС] #8
Приогромное спасибо и низкий поклон.
Только вот тут другая проблемка нарисовалась- onBackPressed();- красный
Java
1
2
3
4
    public void onBackPressed() { if(mWebView.canGoBack()) {  mWebView.goBack(); }
 else {
  super.onBackPressed();  
}}
0
Gbidon
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 5
31.07.2015, 09:12  [ТС] #9
Цитата Сообщение от Gbidon Посмотреть сообщение
Только вот тут другая проблемка нарисовалась- onBackPressed();- красный

*
Java
1
2
3
4
* public void onBackPressed() { if(mWebView.canGoBack()) { *mWebView.goBack(); }
*else {
* super.onBackPressed(); *
}}
может кто подскажет решение?
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
31.07.2015, 09:37 #10
Цитата Сообщение от Gbidon Посмотреть сообщение
может кто подскажет решение?
если не ошибаюсь, у фрагментов нет onBackPressed(), вешайте на активити
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 09:37
Привет! Вот еще темы с ответами:

Что означают конструкции "finally" и "throw new"? - Программирование Android
Я с Java уже давно, но с этим столкнулся в первый раз. Объясните, пожалуйста, что означают вот это &quot;finally&quot; и &quot;throw new&quot;. Вот пример...

Свой Launcher. Срабатывает кнопка "назад" - Программирование Android
Здравствуйте! -Пишу свой простенький Laucher(во многом опирался на этот пример). -Тестирую на телефоне(texet). -При загрузке...

Создать свой "контрол" наследник Button - Программирование Android
Необходимо создать control. У этого control задний фон должен быть таким &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;shape...

блокирование кнопок "Home" "Back" - Программирование Android
Доброго времени. собственно вопрос сл. можно ли заблокировать или каким либо образом отключить возможность нажатия пользования кнопок...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
31.07.2015, 09:37
Ответ Создать тему
Опции темы

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