2011-01-29 2 views
3

Итак, у меня есть WebView внутри LinearLayout с блоком EditText и кнопкой, чтобы сделать поиск приложения в Интернете. Когда я нажимаю кнопку мыши, я забираю меня в браузер Android. как мне сделать так, чтобы он оставался в моем WebView, когда я нажимаю go? вот мой макет:WebView внутри приложения?

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
     <EditText 
     android:id="@+id/web_address" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="http://"/> 

     <Button 
     android:id="@+id/go" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/go" 
     android:gravity="right"/> 

<WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
</LinearLayout> 

вот мой источник:

package straightapp.com.Browser; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.view.KeyEvent; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.view.View.OnKeyListener; 
    import android.webkit.WebView; 
    import android.widget.Button; 
    import android.widget.EditText; 

    public class Browser extends Activity { 
WebView mWebView; 
Button button; 
EditText text; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.straightapp.com"); 

     text=(EditText)findViewById(R.id.web_address); 
     button=(Button) findViewById(R.id.go); 
     button.setOnClickListener(new OnClickListener(){ 

    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    openBrowser(); 

    } 
     }); 
     text.setOnKeyListener(new OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
        // TODO Auto-generated method stub 
        if (keyCode==KeyEvent.KEYCODE_ENTER){ 
          openBrowser(); 
          return true; 
        } 

        return false; 
      } 
      }); 
    } 

    public void openBrowser(){ 
     Uri uri=Uri.parse(text.getText().toString()); 
     Intent intent=new Intent(Intent.ACTION_VIEW,uri); 
     startActivity(intent); 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
    } 

Благодаря

ответ

1

Чтобы быть точным, вы можете попробовать следующее изменение:

public void openBrowser(){ 
    //Ensure that URL entered is a valid one 
    mWebView.loadUrl(text.getText().toString()); 
} 
+2

Это просто взяло меня в броузер. – Christian

+1

@Christian: Возможно, веб-страница, которую вы пытаетесь загрузить, выполняет перенаправление. Перенаправления и клики по ссылкам в «WebView» по умолчанию открываются в браузере по умолчанию пользователя. Вы можете использовать 'WebViewClient' и' shouldOverrideUrlLoading() ', чтобы изменить это поведение. – CommonsWare

+1

@CommnsWare: Извините, я немного noobie. Я бы это сказал? – Christian

2

Когда я нажимаю перейти на моей кнопке она берет меня на фондовом андроид браузер.

Это потому, что вы сказали Android. startActivity() начинает деятельность.

Как мне сделать так, чтобы он оставался в моем WebView, когда я нажимаю go?

Вызов loadUrl() на вашем WebView вместо вызова startActivity().

+0

так insted of: public void openBrowser() { Uri uri = Uri.parse (text.getText(). ToString()); Цель намерения = новое намерение (Intent.ACTION_VIEW, uri); startActivity (намерение); – Christian

+0

У меня бы: public void openBrowser() { Uri uri = Uri.parse (text.getText(). ToString()); Цель намерения = новое намерение (Intent.ACTION_VIEW, uri); loadUrl (намерение); – Christian

+0

@Christian: Нет. Это даже не компилируется. См. Ответ @ TheCottonSilk. – CommonsWare

0

Изменить ваш XML-файл, как показано ниже:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".Browser"> <!--Just add this line --> 
     <EditText 
     android:id="@+id/web_address" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="http://"/> 

     <Button 
     android:id="@+id/go" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/go" 
     android:gravity="right"/> 

<WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
</LinearLayout> 
0

Первый декларировать WebView и ProgressBar

progressBar = (ProgressBar)findViewById(R.id.progressBar); 
    webView = (WebView) findViewById(R.id.webView); 
    webView.setWebViewClient(new myWebClient()); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl("http://www.google.com"); 

Копирование и вставьте этот код ниже. Метод создания

public class myWebClient extends WebViewClient { 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     progressBar.setVisibility(View.VISIBLE); 
     view.loadUrl(url); 
     return true; 

    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 

     progressBar.setVisibility(View.GONE); 
    } 
Смежные вопросы