2014-03-24 49 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? –

相关问题