2013-03-20 16 views
0

我試圖使用條形碼掃描儀,然後採取該輸入並使用另一個活動打開一個URL。我已經能夠得到數據返回,而不是在另一個活動,並沒有看到任何完全像這樣的項目。我不確定它是否與意圖有關,或者我打電話給字符串。第二個java中的webview工作,但不接受字符串。謝謝您的幫助!Webview將不會收到從以前的活動getStringExtra

Scanner.java(這工作好)

package com.pangolin.rollin.ts; 

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

public class Scanner extends Activity { 
TextView tvStatus; 
TextView tvResult; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scanner); 
    Button websku = (Button) findViewById(R.id.btnsku); 
    websku.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      Intent myintent = new Intent(Scanner.this, Websku.class); 
      startActivity(myintent); 
     } 
    }); 

    tvStatus = (TextView) findViewById(R.id.tvStatus); 
    tvResult = (TextView) findViewById(R.id.tvResult); 

    Button scanBtn = (Button) findViewById(R.id.btnScan); 

    // in some trigger function e.g. button press within your code you 
    // should add: 
    scanBtn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      try { 

       Intent intent = new Intent(
         "com.google.zxing.client.android.SCAN"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE,PRODUCT_MODE"); 
       startActivityForResult(intent, 0); 

      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), "ERROR:" + e, Toast.LENGTH_LONG) 
         .show(); 

      } 

     } 
    }); 

} 

// In the same activity you’ll need the following to retrieve the results: 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 

     if (resultCode == RESULT_OK) { 
      tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT")); 
      tvResult.setText(intent.getStringExtra("SCAN_RESULT")); 
     } else if (resultCode == RESULT_CANCELED) { 
      tvStatus.setText("Press a button to start a scan."); 
      tvResult.setText("Scan cancelled."); 
     } 
    } 
} 

} 

而且websku.java(不工作,應該從以前的活動採取的結果。

package com.pangolin.rollin.ts; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Window; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class Websku extends Activity { 
final Activity activity = this; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    String sku = intent.getStringExtra("SCAN_RESULT"); 
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    setContentView(R.layout.activity_websku); 
    WebView webView = (WebView) findViewById(R.id.webview_sku); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      activity.setTitle("Loading..."); 
      activity.setProgress(progress * 100); 

      if (progress == 100) 
       activity.setTitle(R.string.title_activity_websku); 
     } 
    }); 

    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onReceivedError(WebView view, int errorCode, 
       String description, String failingUrl) { 
      // Handle the error 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 

    webView.loadUrl("http://m.radioshack.com/radioshack/catalog/searchList.do?categoryId=&keyword="+sku); 

    }; 
} 

回答

0

您沒有設置任何額外給Websku意圖:

websku.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 
     Intent myintent = new Intent(Scanner.this, Websku.class); 
     startActivity(myintent); 
    } 
}); 

應該是:

websku.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 
     Intent myintent = new Intent(Scanner.this, Websku.class); 
     myintent.putExtra("somename", somevalue); 
     startActivity(myintent); 
    } 
}); 
+0

工作很好只是添加了putExtra intent,容易忽略簡單的事情..謝謝! – Fandroid 2013-03-21 18:54:44

0

您不需要爲websku活動設置額外功能。保存從掃描儀返回的意圖:讓保存的意圖也將複製額外的副本從掃描儀返回

private Intent mWebskuIntent; 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
     mWebskuIntent = intent; 
     // more of your code 

然後,當你啓動websku活動:

Intent myintent = new Intent(mWebskuIntent); 
myintent.setClass(Scanner.this, Websku.class); 
startActivity(myintent); 

你可能想檢查mWebskuIntent也是空的。

相關問題