2016-11-18 6 views
0

画像ビュー1をクリックすると、新しいアクティビティが開始され、次のアクティビティで同じ画像が新しい画像ビュー2に表示されます。クリックされたimageview1は私の主要な活動についてのリストビューによってアクセスされます。リストビューには配列が設定され、各リストビュー項目には対応するイメージがあります。イメージビューから2番目のアクティビティに画像を渡すときにエラーが発生しました

リストビューアイテムをクリックすると、imageview1が存在する新しいアクティビティが開始されます。このイメージビューは、描画可能なイメージを参照するxml型配列を使用して作成されます。

新しいアクティビティの最初の画像ビューから次の画像ビューに画像を渡すときに問題があります。私は以下に含まれているnullポインタの例外を取得しています。私は非常にプログラミングに新しいと問題を解決する方法を本当に確実ではない。どんな助けでも本当に感謝しています。

public class FullScreenImage extends AppCompatActivity { 

TouchImageView routeImageFull; 

@Override 
protected void onCreate(Bundle saveInstanceState){ 
    super.onCreate(saveInstanceState); 


    setContentView(R.layout.full_screen_image); 
    routeImageFull = (TouchImageView) findViewById(R.id.fullScreenImageView); 


    if(getIntent().hasExtra("byteArray")) { 
     TouchImageView routeImageFull= new TouchImageView(this); 
     Bitmap bitmap = BitmapFactory.decodeByteArray(
       getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length); 
     routeImageFull.setImageBitmap(bitmap); 
    } 
} 
} 

と相続人

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.zach.listview, PID: 3429 
       java.lang.NullPointerException: Attempt to invoke virtual  method 'boolean  android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int,  java.io.OutputStream)' on a null object reference 
        at  com.example.zach.listview.RouteDetails$1.onClick(RouteDetails.java:47) 
        at android.view.View.performClick(View.java:5610) 
        at android.view.View$PerformClick.run(View.java:22265) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at  android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
を取得中にエラーイムに画像を渡そうと最初のImageViewの

public class RouteDetails extends AppCompatActivity { 

ImageView routeImage; 

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

    //TextView for route details 
    final TextView routeDetailsView = (TextView) findViewById(R.id.routeDetailsView); 
    routeDetailsView.setText(getIntent().getExtras().getString("route")); 

    //ImageView for route details 
    routeImage = (ImageView) findViewById(R.id.routeImage); 
    routeImage.setImageResource(getIntent().getIntExtra("imageResourceId", 0)); 


    //passing image to fullscreenimage 
    routeImage.setDrawingCacheEnabled(true); 
    routeImage.buildDrawingCache(); 
    final Bitmap bitmap = routeImage.getDrawingCache(); 

////////// Trying to pass image to new activity 

    routeImage.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) 
     { 
      Intent i = new Intent(RouteDetails.this, FullScreenImage.class); 
      //Bitmap _bitmap; // your bitmap 
      ByteArrayOutputStream _bs = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs); 
      i.putExtra("byteArray", _bs.toByteArray()); 
      startActivity(i); 
     } 

    }); 


//////////// 
} 

とHERESに私のfullscreenimageクラスイムが含まれていますHERESに私のrouteDetailsクラス

+1

[NullPointerExceptionがある、と私はそれをどのように修正すればよいか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-の可能性のある重複i-fix-it) –

+0

上記のリンクを読んで、エラーの原因を突き止める方法を教えてください。 RouteDetails.javaの47行目から始めるべきです。 –

+0

'routeImage.getDrawingCache()'がnullを返しました。明らかに –

答えて

0

ビットマップ全体を渡すのではなく。ここに来ているリソースIDを別のアクティビティに送信するだけで、ここでやっているのと同じ方法でイメージを表示することができます。以下は変更されたコードです。

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

    //TextView for route details 
    final TextView routeDetailsView = (TextView)  
    findViewById(R.id.routeDetailsView); 
    routeDetailsView.setText(getIntent().getExtras().getString("route")); 

    //ImageView for route details 
    routeImage = (ImageView) findViewById(R.id.routeImage); 

    int mImageResource = getIntent().getIntExtra("imageResourceId", 0); 
    routeImage.setImageResource(mImageResource); 


    //passing image to fullscreenimage 
    routeImage.setDrawingCacheEnabled(true); 
    routeImage.buildDrawingCache(); 
    final Bitmap bitmap = routeImage.getDrawingCache(); 

    // Trying to pass image to new activity 

    routeImage.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) 
     { 
      Intent i = new Intent(RouteDetails.this,FullScreenImage.class); 
      i.putExtra("mImageResource", mImageResource); 
      startActivity(i); 
     } 

    }); 
} 
+1

あなたは私のヒーローです!元々はやろうとしていたことですが、それをあきらめました。完璧に働いてくれてありがとう。 – zsh5032

関連する問題