【问题标题】:getpixel()is showing errorgetpixel() 显示错误
【发布时间】:2012-05-24 18:59:23
【问题描述】:

我正在使用一个图像视图,我想知道像素颜色,所以我使用 getpixel()... 方法 但它向我显示了一个错误.... 这就是我使用获取像素方法的方式..

image  = BitmapFactory.decodeResource(getResources(), rid);
                pixel = image.getPixel((int)x,(int)y);
                k.setText(Integer.toString(pixel)); 

它显示一个错误.......

05-24 13:29:38.101: E/AndroidRuntime(21987): FATAL EXCEPTION: main
05-24 13:29:38.101: E/AndroidRuntime(21987): java.lang.NullPointerException
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.example.nam.FirstImage.pageinfo(FirstImage.java:100)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.example.nam.FirstImage.onTouch(FirstImage.java:63)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.View.dispatchTouchEvent(View.java:3881)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:869)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1769)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1135)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1753)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2227)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1886)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.os.Looper.loop(Looper.java:130)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at android.app.ActivityThread.main(ActivityThread.java:3687)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at java.lang.reflect.Method.invokeNative(Native Method)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at java.lang.reflect.Method.invoke(Method.java:507)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
05-24 13:29:38.101: E/AndroidRuntime(21987):    at dalvik.system.NativeStart.main(Native Method)

编辑 ::::

public class FirstImage extends ImageView implements OnTouchListener {


    MotionEvent event;
    TextView k;
    int rid;
    int pixel;
    Bitmap image;
    String huma ="human";
    String info = "human";
     float x = 0; //init value 
     float y = 0; //init value
     Animation animationFadeIn;
    int t=0;
    int i=1;

    public FirstImage(Context context) { 
        super(context); 
        k=(TextView)findViewById(R.id.textView1);



        } 
    public FirstImage(Context context, AttributeSet attrs) { 
        super(context, attrs);
        k=(TextView)findViewById(R.id.textView1);
        } 


    public void changeImage(int id){

                    this.setImageResource(id);
                rid=id;
                    final Animation animationFadeout=AnimationUtils.loadAnimation(getContext(), R.anim.zoomin);
                    this.startAnimation(animationFadeout);
                    this.setOnTouchListener(this);

    }
    @Override
    public boolean onTouch(View arg0, MotionEvent me) {

        switch(me.getAction()){
        case MotionEvent.ACTION_DOWN:
            x=me.getX();
            y= me.getY();
            pageinfo(x,y);
            break;
        case MotionEvent.ACTION_MOVE:
            x=me.getX();
            y= me.getY();
            pageinfo(x,y);
            break;
        case MotionEvent.ACTION_UP:
            x=me.getX();
            y= me.getY();
            pageinfo(x,y);
            break;
        case MotionEvent.ACTION_OUTSIDE:
            x=me.getX();
            y= me.getY();
            pageinfo(x,y);
            break;
        default: return true;
        }
        return false;
    }
    public void pageinfo(float x, float y) {
        // TODO Auto-generated method stub

         if(rid==R.drawable.cell){
                image  = BitmapFactory.decodeResource(getResources(), rid);
                pixel = image.getPixel((int)x,(int)y);
                k.setText(Integer.toString(pixel));

                }
}

【问题讨论】:

  • 第 100 行是哪一行?你确定 rid 是一个有效的位图资源 id 吗?
  • 是的,我将值存储在 R.drawble.imge 的值中。第 100 行是 k.setText(Integer.toString(pixel));
  • Integer.toString 没有返回 null,这意味着 k 必须为 null。
  • 那么kpixel 会抛出异常。如果是这种情况,那么不,如果getPixel() 不在异常源自的第 100 行,则不会引发错误。我们需要更多。
  • 我的猜测是k 还没有被实例化。

标签: android getpixel


【解决方案1】:

您将获得NullPointerException,因为您的k 成员是null

它被声明并使用了ImageView 扩展,并使用findViewById 初始化,返回null。 在父 Activity 中使用相同的代码 (findViewById) 会返回所需的 TextView 实例。

您应该从您的FirstImage 类中删除k 成员,当您在onTouch 事件中获得pixel 值时,将其传递给Activity:让它处理其他gui 内容:

所以把你的FirstImage改成:

pixel = image.getPixel((int)x,(int)y);
((AshActivity) getContext()).writePixelIntoK(pixel);

并在您的主要活动中实现writePixelIntoK 方法,例如:

public void writePixelIntoK(int pixel)
{
    k.setText("pixel touched: " + pixel);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2017-11-26
    • 1970-01-01
    • 2023-04-01
    • 2014-02-13
    • 2012-08-11
    相关资源
    最近更新 更多