2016-09-27 10 views
0

こんにちは私の教授はこれを理解することができませんので、ここに投稿します。私は気温を表示するアプリを作ろうとしています。シークバーが一定の温度になると、別のイメージをimageViewに表示したいのです。私はアプリをテストし、シークバーが40を過ぎるとアプリが差し押さえられる。誰が私にそれがなぜあるか教えてもらえますか?if文を使用してイメージresoureを設定しようとすると強制終了します

SeekBar seekBar; 
TextView f, c; 
ImageView i; 
int progress_value; 


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

    seekBar = (SeekBar)findViewById(R.id.seekBar); 
    seekBar.setMax(200); 
    f = (TextView)findViewById(R.id.f); 
    c = (TextView)findViewById(R.id.c); 
    i = (ImageView)findViewById(R.id.imageView); 

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      progress_value = progress; 

      f.setText(" " + progress_value); 
      c.setText(" " + .55 * (progress_value - 32)); 

      if (progress_value <= 40){ 
       i.setImageResource(R.drawable.cold); 
      } 
      else if (progress_value > 40 && progress_value < 90){ 
       i.setImageResource(R.drawable.justright); 
      } 
      else{ 
       i.setImageResource(R.drawable.hot); 
      } 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

} 

}

9月26日夜11時21分56秒:起動アプリ $ adbのプッシュC:\ Users \ユーザーaniel \ AndroidStudioProjects \宿題#2 \アプリ\ビルド\出力\ APK \ APP- debug.apk /data/local/tmp/com.example.aniel.homework2 $ adbのシェル午後は-r "/data/local/tmp/com.example.aniel.homework2" 成功

$ adbのシェルをインストールam start -n "com.example.aniel.homework2.jpg" 012 "プロセスがオンラインになるのを待ちます。 プロセスがオンラインになるのを待っています。 プロセスがオンラインになるのを待っています。 プロセスがオンラインになるのを待っています。 デバイスエミュレータ-5554のプロセス2373に接続しました。 W/gralloc_ranchu:初期化EGL、バージョン1.4 D/OpenGLRenderer:スワップ動作1 D/AndroidRuntime:VM

   --------- beginning of crash 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.aniel.homework2, PID: 2373 
        java.lang.RuntimeException: Canvas: trying to draw too large(241864000bytes) bitmap. 
         at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260) 
         at android.graphics.Canvas.drawBitmap(Canvas.java:1415) 
         at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545) 
         at android.widget.ImageView.onDraw(ImageView.java:1286) 
         at android.view.View.draw(View.java:17068) 
         at android.view.View.updateDisplayListIfDirty(View.java:16050) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.updateDisplayListIfDirty(View.java:16045) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.updateDisplayListIfDirty(View.java:16045) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.updateDisplayListIfDirty(View.java:16045) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.updateDisplayListIfDirty(View.java:16045) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.updateDisplayListIfDirty(View.java:16045) 
         at android.view.View.draw(View.java:16834) 
         at android.view.ViewGroup.drawChild(ViewGroup.java:3764) 
         at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550) 
         at android.view.View.draw(View.java:17071) 
         at com.android.internal.policy.DecorView.draw(DecorView.java:751) 
         at android.view.View.updateDisplayListIfDirty(View.java:16050) 
         at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656) 
         at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662) 
         at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770) 
         at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796) 
         at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604) 
         at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211) 
         at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246) 
         at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301) 
         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871) 
         at android.view.Choreographer.doCallbacks(Choreographer.java:683) 
         at android.view.Choreographer.doFrame(Choreographer.java:619) 
         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) 
         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) 
Application terminated. 
をシャットダウンGrallocパイプ

   [ 09-26 23:22:05.204 2373: 2373 D/   ] 
       HostConnection::get() New Host Connection established 0x982851c0, tid 2373 

I/OpenGLRendererに失敗しました

+2

のために働いていましたか?あなたが得ている例外は何ですか? – Nishith

+0

ログを共有できますか? – Arslan

+0

例外を貼り付けてください。またはアプリがバックグラウンドに移行していませんか? –

答えて

0

描画可能なイメージは実行時に変更できません。このため、アプリがクラッシュしています。 修正を提案したいと思います。描画可能なイメージをビットマップに変換し、必要な条件でビットマップを変更してみてください。

+0

ナンセンス。コードが実行しようとするのは、画像ビュー用に別の画像を設定することだけです。コードには何も問題はありません。 – greenapps

+0

私は間違っているかもしれません。しかし、かつて私は同じような状況に直面していました。 – Nishith

0

使用ピカソ、このようなものは、あなたのログメッセージを共有することができ、私

ImageView img1 = (ImageView)findViewById(R.id.chamb_img); 
Picasso.with(this).load(R.drawable.h).resize(75,75).into(img1); 
関連する問題