2014-03-24 46 views
1

我有一個qr代碼掃描器,然後我有一個If else語句,我想在if語句爲true時顯示Webview,但Web視圖仍然顯示並阻止相機視圖。我該怎麼做?如何在Android中顯示WebView

 PreviewCallback previewCb = new PreviewCallback() { 
     public void onPreviewFrame(byte[] data, Camera camera) { 
      Camera.Parameters parameters = camera.getParameters(); 
      Size size = parameters.getPreviewSize(); 

      Image barcode = new Image(size.width, size.height, "Y800"); 
      barcode.setData(data); 

      int result = scanner.scanImage(barcode); 

      if (result != 0) { 
       previewing = false; 
       mCamera.setPreviewCallback(null); 
       mCamera.stopPreview(); 

       SymbolSet syms = scanner.getResults(); 
       WebView engine = (WebView) findViewById(R.id.web_engine); 
       engine.removeAllViews(); 
          for (Symbol sym : syms) { 
          String value = new String( sym.getData()); 
          if(value.startsWith("http://192.168.74.1")){ 
           scanText.setText("QR Code result: " + value); 
           barcodeScanned = true; 
           engine.setVisibility(View.VISIBLE); 
           engine.loadUrl(value); 
          } 
          else { 
           scanText.setText("QR Code result 2: " + value); 
           barcodeScanned = true; 
           engine.setVisibility(View.GONE); 
          } 
          TextView tv = (TextView) findViewById(R.id.scanText); 
          tv.setMovementMethod(LinkMovementMethod.getInstance()); 
         } 

      } 


     } 
    }; 
+0

第一:請不要做循環。其次:如果您希望WebView不再在'else'語句中顯示,只需通過'engine.setVisibility(View.GONE)'將其禁用即可。 – kiruwka

回答

1

創建兩個Android的佈局文件 - 「RES /佈局/ main.xml中」和「RES /佈局/ webview.xml」。

文件:RES /佈局/ main.xml中

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

    <Button 
     android:id="@+id/buttonUrl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Go to http://www.google.com" /> 

</LinearLayout> 

文件:RES /佈局/ main.xml中 - 例如web視圖

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 

兩個活動類,活動顯示一個按鈕,另一個活動使用預定義的URL顯示WebView。

文件:MainActivity.java

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    private Button button; 

    public void onCreate(Bundle savedInstanceState) { 
     final Context context = this; 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     button = (Button) findViewById(R.id.buttonUrl); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
      Intent intent = new Intent(context, WebViewActivity.class); 
      startActivity(intent); 
      } 

     }); 

    } 

} 

文件:WebViewActivity.java

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class WebViewActivity extends Activity { 

    private WebView webView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 

     webView = (WebView) findViewById(R.id.webView1); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl("http://www.google.com"); 

    } 

} 

文件:AndroidManifest.xml中 - 查看完整的例子。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mkyong.android" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".WebViewActivity" 
      android:theme="@android:style/Theme.NoTitleBar" /> 

     <activity 
      android:label="@string/app_name" 
      android:name=".MainActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

我該如何將網址傳遞給webviewactivity.java? url是我發佈的代碼中的字符串值? – duderbear

+0

我該如何傳遞存儲在變量值中的url?該值來自掃描的qr碼。 – duderbear

+0

我在一個單獨的android項目中試過這段代碼。當我按下按鈕時,應用程序停止。 – duderbear

0

嘗試......

SymbolSet syms = scanner.getResults(); 
    WebView engine = (WebView) findViewById(R.id.web_engine); 
      for (Symbol sym : syms) { 
      String value = new String( sym.getData()); 
       if(value.startsWith("http://192.168.74.1")){ 
       scanText.setText("QR Code result: " + value); 
       barcodeScanned = true; 
       engine.setVisibility(View.VISIBLE); 
       engine.loadUrl(value); 
       } 
       else { 
        scanText.setText("QR Code result 2: " + value); 
        barcodeScanned = true; 
        engine.setVisibility(View.INVISIBLE); 
       } 
       TextView tv = (TextView) findViewById(R.id.scanText); 
       tv.setMovementMethod(LinkMovementMethod.getInstance()); 
     } 
+0

它不工作。 – duderbear

+0

嘗試engine.setVisibility(View.GONE);而不是... View.INVISIBLE? –

相關問題