当前位置: 代码迷 >> Android >> Caused by: java.lang.IllegalStateExc,该如何解决
  详细解决方案

Caused by: java.lang.IllegalStateExc,该如何解决

热度:89   发布时间:2016-04-28 01:28:10.0
Caused by: java.lang.IllegalStateExc
代码如下
public class MainActivity extends Activity {
ImageView iv_bottom,iv_top;
Bitmap topImage,bottomImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

private void init() {
iv_bottom=(ImageView) findViewById(R.id.iv_bottom);
iv_top=(ImageView) findViewById(R.id.iv_top);


topImage=BitmapFactory.decodeResource(getResources(), R.drawable.a2);
bottomImage=BitmapFactory.decodeResource(getResources(), R.drawable.b2);

iv_top.setImageBitmap(topImage);
iv_bottom.setImageBitmap(bottomImage);


topImage.setPixel(topImage.getWidth()/2,topImage.getHeight()/2,Color.TRANSPARENT);
System.out.println(topImage.getWidth()/2+","+topImage.getHeight()/2);
iv_top.setImageBitmap(topImage);


}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


错误信息:
04-16 04:26:16.850: E/AndroidRuntime(791): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stripclothes/com.stripclothes.MainActivity}: java.lang.IllegalStateException
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.os.Looper.loop(Looper.java:137)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread.main(ActivityThread.java:5103)
04-16 04:26:16.850: E/AndroidRuntime(791):  at java.lang.reflect.Method.invokeNative(Native Method)
04-16 04:26:16.850: E/AndroidRuntime(791):  at java.lang.reflect.Method.invoke(Method.java:525)
04-16 04:26:16.850: E/AndroidRuntime(791):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-16 04:26:16.850: E/AndroidRuntime(791):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-16 04:26:16.850: E/AndroidRuntime(791):  at dalvik.system.NativeStart.main(Native Method)
04-16 04:26:16.850: E/AndroidRuntime(791): Caused by: java.lang.IllegalStateException
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.graphics.Bitmap.setPixel(Bitmap.java:1227)
04-16 04:26:16.850: E/AndroidRuntime(791):  at com.stripclothes.MainActivity.init(MainActivity.java:33)
04-16 04:26:16.850: E/AndroidRuntime(791):  at com.stripclothes.MainActivity.onCreate(MainActivity.java:18)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.Activity.performCreate(Activity.java:5133)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-16 04:26:16.850: E/AndroidRuntime(791):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
04-16 04:26:16.850: E/AndroidRuntime(791):  ... 11 more


运行时显示topImage.setPixel(topImage.getWidth()/2,topImage.getHeight()/2,Color.TRANSPARENT);这附近出错,我仔细看了下应该没错呀    请问我哪块不对了

------解决思路----------------------
因为你的bitmap:topImage是从文件中读取的,直接获得的bitmap是不可变的,不能操作。
你可以把topImage copy一份,然后对copy对象进行改变。
  相关解决方案