2016-08-22 5 views
3

私はQRコードをスキャンするためにZXing compile 'me.dm7.barcodescanner:zxing:1.8.4'ライブラリを使用しています。スキャン結果をカスタムダイアログレイアウトで表示するには問題があります。QRコードを表示する方法カスタムダイアログで結果をスキャンしますか?

stringtextViewcustom dialogレイアウトで表示される方法はありますか?

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler { 

    private ZXingScannerView mScannerView; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mScannerView = new ZXingScannerView(this); 
     setContentView(mScannerView); 

     mScannerView.setResultHandler(this); 
     mScannerView.startCamera(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mScannerView.stopCamera(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mScannerView.resumeCameraPreview(MainActivity.this); 
    } 

    @Override 
    public void handleResult(Result rawResult) { 

     Log.e("handler", rawResult.getText()); // Prints scan results 
     Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode) 


     final String shareResult = rawResult.getText();` 

私はこのメソッドを使用しません。しかし、それは素晴らしいです

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Scan Result"); 
     builder.setMessage(rawResult.getText()); 
     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       //user pressed OK 
       mScannerView.resumeCameraPreview(MainActivity.this); 
      } 
     }); 
     builder.setNeutralButton("Share", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       Intent sendIntent = new Intent(); 
       sendIntent.setAction(Intent.ACTION_SEND); 
       sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult); 
       sendIntent.setType("text/plain"); 
       startActivity(sendIntent); 
      } 
     }); 
     AlertDialog alert1 = builder.create(); 
     alert1.show(); 

    } 

私はこのメソッドを使いたいです。しかし、それは動作しません。

private void dialogHandler(String result) { 

     final String shareResult = result; 

     final Dialog dialog = new Dialog(MainActivity.this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     dialog.setContentView(R.layout.customdialog); 

     final ImageView click_ok = (ImageView) dialog.findViewById(R.id.click_ok); 
     final ImageView click_share = (ImageView) dialog.findViewById(R.id.click_share); 

     final TextView qrResult = (TextView) findViewById(R.id.qrResult); 
     qrResult.setText(shareResult); 

     click_ok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       mScannerView.resumeCameraPreview(MainActivity.this); 
       dialog.dismiss(); 
      } 
     }); 

     click_share.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent sendIntent = new Intent(); 
       sendIntent.setAction(Intent.ACTION_SEND); 
       sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult); 
       sendIntent.setType("text/plain"); 
       getBaseContext().startActivity(sendIntent); 

      } 
     }); 

     dialog.show(); 
    } 
} 
+0

あなたはこれを試してみましたmethod.Have handleResult()内のテキスト値を得ることができますか? –

+0

はい。私は 'handleResult()'メソッドを使用しており、結果を 'alert dialog'に示すことができますが、' custom dialog'に結果を表示することはできません。 – sohanoor

+0

ここにコードを投稿 –

答えて

0

これが機能するかどうかを確認してください。

 @Override 
     public void handleResult(Result rawResult) { 

       Log.e("handler", rawResult.getText()); // Prints scan results 
       Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode) 


       final String shareResult = rawResult.getText(); 

       final Dialog dialog = new Dialog(MainActivity.this); 
       dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
       dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
       dialog.setContentView(R.layout.customdialog); 

       final ImageView click_ok = (ImageView) dialog.findViewById(R.id.click_ok); 
       final ImageView click_share = (ImageView) dialog.findViewById(R.id.click_share); 

       final TextView qrResult = (TextView) findViewById(R.id.qrResult); 
       qrResult.setText(shareResult); 

       click_ok.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View v) { 
           // TODO Auto-generated method stub 

           mScannerView.resumeCameraPreview(MainActivity.this); 
           dialog.dismiss(); 
         } 
       }); 

       click_share.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View v) { 
           // TODO Auto-generated method stub 
           Intent sendIntent = new Intent(); 
           sendIntent.setAction(Intent.ACTION_SEND); 
           sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult); 
           sendIntent.setType("text/plain"); 
           getBaseContext().startActivity(sendIntent); 

         } 
       }); 

       dialog.show(); 

     } 
+0

私はこれを試しました。しかし、これはうまくいきません。私は問題を発見した。とにかくありがとう。 – sohanoor

0
final TextView qrResult = (TextView) dialog.findViewById(R.id.qrResult); 
qrResult.setText(shareResult); 
+0

このテキストビューもダイアログの一部でしたか? –

+0

yah!私はそれを逃した:( – sohanoor

+0

今、それはうまくいっている:D – sohanoor

関連する問題