謎のエラー'boolean android.graphics.Bitmap.isRecycled()' on a null object reference

1,154 views
Skip to first unread message

廣松優諭

unread,
Mar 26, 2016, 7:00:10 AM3/26/16
to 日本Androidの会
Eclipseで開発をしています。
Android4.4.2の実機で動かしています。

アプリに広告をつけるため、
https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start?hl=ja
を参考にしています。

そのまま広告を追加したところ、
「MainActivity」がカスタムビューの「TouchView」を使用する記述
(setContentView(new TouchView(this));)
になっており、エラーが出てましたが、

setContentView(R.layout.activity_main);
に修正し、

カスタムビューの「TouchView」に
public TouchView(Context context,AttributeSet attrs,int defStyle){
    super(context,attrs,defStyle);
}
public TouchView(Context context,AttributeSet attrs){
    super(context, attrs);
}
と追加し修正したところそのエラーは消えました。

が、今度は別のエラーが出現しました。
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference

このエラーの原因を調べたのですが、よくわかりませんでした。
どのように修正すればよろしいでしょうか。
ご教授ください。


リックス

unread,
Mar 26, 2016, 12:48:46 PM3/26/16
to android-g...@googlegroups.com
リックスです
setContentViewにXMLファイルを入れるだけだと思います

だから、

setContentView(R.layout.activity_main);


public TouchView(Context context,AttributeSet attrs,int defStyle){
    super(context,attrs,defStyle);
}
public TouchView(Context context,AttributeSet attrs){
    super(context, attrs);
}

の部分は余計なので消すべきじゃないでしょうか?





2016年3月26日 19:58 廣松優諭 <tashika...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
------------------------------------------------------------------------------------
〒630-8304
奈良県奈良市南肘塚町49-19
栢本 博文(かやもと ひろふみ)
090-5244-1408
--------------------------------------------------------------------------------------

廣松優諭

unread,
Mar 26, 2016, 8:56:20 PM3/26/16
to 日本Androidの会
今度は
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.myapplication/com.example.user.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.user.myapplication.TouchView
というエラーが出ました。

XMLがどこか間違っているんでしょうか?。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.user.myapplication.MainActivity">

<include layout="@layout/content_main"/>

<com.example.user.myapplication.TouchView
android:id="@+id/imageView1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
</android.support.design.widget.CoordinatorLayout>

2016年3月27日日曜日 1時48分46秒 UTC+9 リックス:
このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。

このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
------------------------------------------------------------------------------------
〒630-8304
奈良県奈良市南肘塚町49-19
栢本 博文(かやもと ひろふみ)
090-5244-1408
--------------------------------------------------------------------------------------

廣松優諭

unread,
Mar 28, 2016, 6:52:58 PM3/28/16
to 日本Androidの会
上記activity_main.xmlの
com.example.user.myapplication.TouchView

ImageView
に変更したらエラーは消えましたが、
content_main.xmlのImageView内のsrcで指定されている画像が表示されるだけでした。
TouchViewを表示されたいのですが、色々調べても方法が分かりませんでした。
ご教示お願い致します。

リックス

unread,
Mar 29, 2016, 4:32:56 AM3/29/16
to android-g...@googlegroups.com
リックスです

そもそもこれはなんのどういう処理をしたいプログラムでしょうか?
どこを参考にしてかいたプログラムなのでしょうか?







2016年3月29日 7:52 廣松優諭 <tashika...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。

このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。



--
------------------------------------------------------------------------------------
〒630-8304
奈良県奈良市南肘塚町49-19
栢本 博文(かやもと ひろふみ)
090-5244-1408
--------------------------------------------------------------------------------------

noxi

unread,
Mar 29, 2016, 8:53:58 PM3/29/16
to android-g...@googlegroups.com
noxiです。

ViewがXMLから生成されるとき、確かView(Context, AttributeSet)のコンストラクタが呼び出されます。

public TouchView(Context context,AttributeSet attrs,int defStyle){
super(context,attrs,defStyle);
}
public TouchView(Context context,AttributeSet attrs){
super(context, attrs);
}

これらは必要です。

その上で出力されるエラーは様はぬるぽなので
(BitmapのisRecycledメソッドを呼び出そうとしているが、そのBitmapはnull)
表示される行数の実装を確認するなり、デバッグで止めて確かめるなり。。



2016年3月29日 17:32 リックス <lic...@gmail.com>:
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。

タスマニア・デビル

unread,
Apr 3, 2016, 2:51:18 AM4/3/16
to 日本Androidの会, android.w...@gmail.com

デバッグで止めて確かめて見ました。

public TouchView(Context context) {
    super(context);
}

に画像を読み込む処理として下記のような処理が入っていたのですが、
bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
size = new Rect(0, 0,  bmp.getWidth(),  bmp.getHeight());

onDraw内の
position = new Rect(0, 0, getMeasuredWidth(),getMeasuredHeight());
canvas.drawBitmap(bmp, size, position, null);

bmpsizenullになっていたので、

public TouchView(Context context,AttributeSet attrs,int defStyle){
    super(context,attrs,defStyle);
}
public TouchView(Context context,AttributeSet attrs){
    super(context, attrs);
}

の2つの中にも画像を読み込む処理を追加した所、
エラーが起こらなくなり、無事テスト用の広告を追加する事が出来ました。

皆様、大変助かりました。ありがとうございます。
今後、何かあった場合はまた宜しくお願い致します。

2016年3月30日水曜日 9時53分58秒 UTC+9 noxi:

>> android-group-japan+unsub...@googlegroups.com にメールを送信してください。
>> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
>> https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
>> その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
>
>
>
>
> --
> ------------------------------------------------------------------------------------
> 〒630-8304
> 奈良県奈良市南肘塚町49-19
> 栢本 博文(かやもと ひろふみ)
> 090-5244-1408
> --------------------------------------------------------------------------------------
>
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
>
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages