2015-09-09 5 views
1

Я знаю, что есть много других ответов на stackoverflow на одном и том же, но я не могу заставить его работать.Android - Поиск идентификатора вида из раздутого макета

Что я пытаюсь сделать, это найти идентификатор вида из раздутого макета. Я хочу, чтобы WV1 загружал google.com при нажатии кнопки, вы можете видеть, что я использую onClick из XML для этого.

public void ButtonClicked(View view) 
     { 

     View inflatedView = getLayoutInflater().inflate(R.layout.tab_content, null); 
     WV1 = (WebView) inflatedView.findViewById(R.id.tab1WV); 
     WV1.setWebViewClient(new InsideWebViewClient()); 

      if (WV1.isShown()) { 
       WV1.requestFocus(); 
        } 
       else{ 
       } 

      if (WV1.isFocused()) { 
       WV1.loadUrl("http://www.google.com"); 
       } 
     } 

Это в MainActivity, то WebView (WV1) находится в другом, накачанной классе.

Проблема, ничего не происходит вообще ...

Я застрял на этом в течение достаточно долгого времени, я ценю все помочь дал мне .. Если есть какая-либо другая информация вам нужна, то просто спросите , заранее спасибо!

--Edit-- В MainActivity, theres tabhost и кнопка, которая создает новые вкладки. Когда новые вкладки создаются, MainActivity раздувает файл второго класса, содержащий веб-просмотр, я не могу получить mainactivity, чтобы найти веб-представление из раздутого класса. Я не знаю, поможет ли это больше или нет ...

ответ

0

Вы не привязываете его ни к чему. Вам нужно либо поставить родителя при его надувании, либо вызвать addView в ViewGroup, который должен его содержать.

public void ButtonClicked(View view){ 

    View inflatedView = getLayoutInflater().inflate(R.layout.tab_content, (ViewGroup) findViewById(android.R.id.content)); 
    WV1 = (WebView) inflatedView.findViewById(R.id.tab1WV); 
    WV1.setWebViewClient(new InsideWebViewClient()); 

    if (WV1.isShown()) { 
     WV1.requestFocus(); 
    } 

    if (WV1.isFocused()) { 
     WV1.loadUrl("http://www.google.com"); 
    } 
} 

Или:

((ViewGroup)findViewById(android.R.id.content)).addChild(WV1); 

Оба они будут добавить изображение в конце. Возможно, вам придется добавить некоторые атрибуты макета, чтобы они выглядели так, как вам хочется.

+0

эй Johan, спасибо за это время! Я немного смущен тем, что вы имеете в виду, не могли бы вы привести пример? :) – Tssomas

+1

Done :) добавьте ваш текущий макет и желаемый результат, если вам нужна дополнительная помощь. – JohanShogun

+0

Я добавил редактирование на свой вопрос. Я просто не уверен, что вы говорите, спасибо за пример, хотя, я ценю все ваше время! :) – Tssomas

0

Проверить эту ссылку:

Android - Add textview to layout when button is pressed

Где один из ответов делает это: mLayout.addView (. CreateNewTextView (mEditText.getText() ToString()));

где mLayout - это линейная компоновка в действии.

Вам нужно будет добавить представление к одному из ваших текущих макетов или запустить действие, открывающееся в нем с помощью веб-представления.

0

Альтернативный способ создания WebView:

Webview WV1 = new WebView(view.getContext); 
WV1.setWebViewClient(new InsideWebViewClient()); 

    if (WV1.isShown()) { 
     WV1.requestFocus(); 
      } 
     else{ 
     } 

    if (WV1.isFocused()) { 
     WV1.loadUrl("http://www.google.com"); 
     } 
} 

Теперь добавьте это к виду группы

viewgroup.addchild(WV1); 
Смежные вопросы