2013-03-20 2 views
0

바코드 스캐너를 사용하고 그 입력을 받아 다른 활동에서 사용하여 URL을 열려고합니다. 나는 데이터를 반환 할 수 있었고 다른 활동에는 없었으며 정확히이 프로젝트를 보지 못했습니다. 의도와 관련이 있는지 또는 문자열을 호출하는 방법을 잘 모르겠습니다. 두 번째 자바의 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 의도를 추가했다, 간단한 것들을 간과하기 쉬운 ... 감사합니다! – Fandroid

0

websku 활동에 추가 기능을 설정하지 않았습니다. 당신이 websku 활동을 시작할 때 또한 엑스트라를 복사합니다 저장된 의도의 복사본 스캐너에서 반환 할 다음

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

: 당신은 할 수 있습니다

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

스캐너에서 반환 된 의도를 저장 mWebskuIntent가 null 인지도 검사합니다.