使用位图设置ImageView时出现空指针异常

时间:2012-11-09 12:47:12

标签: android surfaceview

这是我班上的onCreate(...)方法:

    protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.editor);
            setRequestedOrientation(1);

            v = new SView(this);
            v.setOnTouchListener(this);
            //v.setZOrderOnTop(true);
            //v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
            setContentView(v);

            ImageView back = (ImageView) findViewById(R.id.IVEditor);
            bm = loadPhoto("photo", bm);
            if(bm != null)
            {
                    //This Section is giving me the error

                back.setImageBitmap(bm);

            }
        }

这是错误,当我双击它时,它将我带到上面的分离部分。我不知道为什么:

11-09 07:42:42.624: E/AndroidRuntime(32472): Caused by: java.lang.NullPointerException
11-09 07:42:42.624: E/AndroidRuntime(32472):    at com.synlight_development.tattoo_it.Editor.onCreate(Editor.java:64)
11-09 07:42:42.624: E/AndroidRuntime(32472):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
11-09 07:42:42.624: E/AndroidRuntime(32472):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
11-09 07:42:42.624: E/AndroidRuntime(32472):    ... 11 more

3 个答案:

答案 0 :(得分:0)

ImageView back = (ImageView) findViewById(R.id.IVEditor);
必须在使用R.id.IVEditor设置的布局中声明

setContentView

可能R.id.IVEditorR.layout.editor内声明。 Swiching

 ImageView back = (ImageView) findViewById(R.id.IVEditor);
 bm = loadPhoto("photo", bm);
 if(bm != null) {
     back.setImageBitmap(bm);
 }

  v = new SView(this);
  v.setOnTouchListener(this);
  //v.setZOrderOnTop(true);
 //v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
  setContentView(v);

应该成功。但所有都取决于声明R.id.IVEditor的地方;

答案 1 :(得分:0)

可以将编辑器布局文件内容粘贴到此处。由于该editor.xml布局文件必须具有ImageView作为其元素,其id定义为android:id = "@+id/IVEditor"。 然后,只有您将获得确切的ImageView对象。

答案 2 :(得分:0)

据我了解,您似乎正在使用R.id.editor的新实例替换SView布局。我有一段时间没有触及Android,所以不确定SView是做什么的。但是,我首先会认为它用自定义视图/布局/ whater替换了以前的setContentView(R.id.Editor),其中不包含ID为R.layout.IVEditor的布局元素。

所以是的,你试图将图像添加到当前布局中不存在的内容中。 (setContentView(v)正在移除R.id.editor布局并放入不包含R.layout.IVEditor的Sview()。