2016-06-26 9 views
0

私はAndroidアプリケーションでバーコードスキャナを実装しました。スキャナで生成されたバーコードイメージ(ビットマップ)をXMLファイルのImageViewに設定したいと思います。私は(画像/ ImageViewのを示したことになる)MatasActivityを開始する前にアクティビティを開始する前にImageViewをXMLで設定する

しかし、このXMLファイルが初期化されません。これは、 "imageCode"変数がXMLファイルから "R.id.imageCode"を見つけることができないため、私にヌルポイントの受け取りを与えます。

は、どのように私は新しい活動にXMLファイルからImageViewのを設定することができます - 私はstartActivity後にそれを行うことはできません(コードの残りの部分が実行されても、新たな活動にかなりのonCreateないので)

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
      if(result != null) { 
       if(result.getContents() == null) { 
        Log.d("MainActivity", "Cancelled scan"); 
        Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
       } else { 
        Log.d("MainActivity", "Scanned"); 
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); 



Intent intent = new Intent(MainActivity.this, MatasActivity.class); 
        imageCode = (ImageView) findViewById(R.id.imageCode); 
        Bitmap myBitmap = BitmapFactory.decodeFile(result.getBarcodeImagePath()); 
        imageCode.setImageBitmap(myBitmap); 

        startActivity(intent); 

       } 
      } else { 
       super.onActivityResult(requestCode, resultCode, data); 
      } 
     } 

MatasActivityは単なるXMLファイルを実行する目的を持ってMatasActivity方法でのonCreate AKA(バーコードを表示する)だけ実行します。imageCodeが保たれているXMLファイルです

setContentView(R.layout.picked_card); 

を。

答えて

0

なぜ活動を開始する前に画像を設定したいですか? それはそのようには機能しません。新しいアクティビティ(MatasActivity)に「myBitmap」を渡して、起動したら設定することができます。

+0

私はそのことについて考えた - 私は、同様の文字列を渡す必要があり、特にので、私はそれは少し奇妙だと感じました。しかし、私はそれに試してみましょう。乾杯。 – Mikkel

+0

私はそれが奇妙ではないと思います。あなたは100人のパラメタ(メモリが許可している場合)を新しいアクティビティに渡すことができます。 'myBitmap'をオブジェクトとして送信し、新しいアクティビティで再び 'ビットマップ'として扱うことができます。 はい、私に知らせてください。 – user3793589

+0

私はビットマップとして送信する問題を抱えていたので、私は最初のByteArrayには、この方法でそれを変換してみました:http://stackoverflow.com/questions/11010386/send-bitmap-using-intent-android – Mikkel

0

これは部分的に機能します。今私のMatasActivityは次のようになります。

public class MatasActivity extends AppCompatActivity { 
ImageView imageCode; 
TextView imageCodeNumber; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.picked_card); 
    String message = ""; 

    try { 
     byte[] byteArray = getIntent().getByteArrayExtra("image"); 
     Bitmap myBitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

     String number = getIntent().getExtras().getString("number"); 

     imageCode = (ImageView) findViewById(R.id.imageCode); 
     imageCode.setImageBitmap(myBitmap); 

     imageCodeNumber = (TextView) findViewById(R.id.imageCodeNumber); 
     imageCodeNumber.setText(number); 
    } 
    catch (Exception e) { 
     message = e.getMessage(); 
    } 
} 

をしかし、私は、アプリケーションの他の部分からのアクティビティにアクセスしようとすると、それは明らかにバーコードの画像が表示されません。

また、どのようにオブジェクトとして渡す必要があるのか​​少し分かりませんでしたか?

+0

もちろん、ここで起こったことは、 'MainActivity'が画像を「MatasActivity」に与えて、それに「作業を続ける」ということでした。それはアプリケーションの別の部分から動作するため 、「aplicationの別の部分は、」そのパラメータにだけでなく「MatasActivityに」イメージを与える必要があるのは、オブジェクトのものの話の前に、まずこの問題を解決してみましょう – user3793589

+0

... – user3793589

+0

はい、正確に。しかし、画像はMainActivityのonActivityResultメソッドから生成されるため、アプリケーションの別の部分から画像を生成することはできません。 – Mikkel

関連する問題