第一行代码 8.3.1 camera 调用储存照片 NullPointerException问题

这个例子是《第一行代码》8.3.1的例子。下面我把代码粘贴下。
Mainactivity:

public class MainActivity extends AppCompatActivity {
    public static final int TAKE_PHOTO = 1;
    private ImageView picture;
    private Uri imageUri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        picture = findViewById(R.id.picture);
        setContentView(R.layout.activity_main);
        Button takePhoto = findViewById(R.id.take_photo);
        takePhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File outputImage = new File(getExternalCacheDir(), "pic.jpg");
                try {
                    if (outputImage.exists()) {
                        outputImage.delete();
                    }
                    outputImage.createNewFile();
                }catch (IOException e) {
                    e.printStackTrace();
                }
                if (Build.VERSION.SDK_INT >= 24) {
                    imageUri = FileProvider.getUriForFile(MainActivity.this, "com.wang.zhihai" +
                            ".cameratest" +
                            ".fileprovider", outputImage);
                }else {
                    imageUri = Uri.fromFile(outputImage);
                }
                //启动相机
                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                startActivityForResult(intent, TAKE_PHOTO);
            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case TAKE_PHOTO:
                if (resultCode == RESULT_OK) {
                    try {
                        Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver()
                                .openInputStream(imageUri));
                        picture.setImageBitmap(bitmap);
                    }catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }
                break;
            default:
                break;
        }
    }
}

Menifest 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wang.zhihai.cameratest">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--<uses-permission android:name="android.permission.CAMERA"/>-->

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <provider
            android:authorities="com.wang.zhihai.cameratest.fileprovider"
            android:exported="false"
            android:name="android.support.v4.content.FileProvider"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
        </provider>

    </application>

</manifest>

file_paths文件:

 <?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path
        name="my_images"
        path=""/>

</paths>

我的手机是华为Mate 10, Android 8.0 ,运行后拍照,储存拍摄的照片到布局文件的ImageView控件中。点击完成拍摄APP就闪退了。log显示NullPointerException。
图片说明

报错的代码在onActivityResult 方法的 picture.setImageBitmap(bitmap);
求大神帮忙!

4个回答

picture = findViewById(R.id.picture);
setContentView(R.layout.activity_main);

            这2行代码位置换下
SrormGod
进击的神 真是汗颜!
一年多之前 回复

你要先setContentView才可以去findViewById

SrormGod
进击的神 非常感谢!
一年多之前 回复
viewgroup
viewgroup setcontentview之后,才相当于吧XML布局加载成根view,这样后面的findviewByid才能从这个contentview里面找到,否者就会报空指针异常
一年多之前 回复

先SetContentView再findViewById

如果报错介意先查看是什么类型错误,再定位错误,另外注意方法的顺序问题,一般关于页面绑定的东西要先写,方法内是讲究顺序结构的,如果还没定义就被使用了就会引起空指针异常。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
第一行代码 8.3.1 camera 调用储存照片 NullPointerException问题
这个例子是《第一行代码》8.3.1的例子。下面我把代码粘贴下。rnMainactivity:rnrn```rnpublic class MainActivity extends AppCompatActivity rn public static final int TAKE_PHOTO = 1;rn private ImageView picture;rn private Uri imageUri;rn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn picture = findViewById(R.id.picture);rn setContentView(R.layout.activity_main);rn Button takePhoto = findViewById(R.id.take_photo);rn takePhoto.setOnClickListener(new View.OnClickListener() rn @Overridern public void onClick(View v) rn File outputImage = new File(getExternalCacheDir(), "pic.jpg");rn try rn if (outputImage.exists()) rn outputImage.delete();rn rn outputImage.createNewFile();rn catch (IOException e) rn e.printStackTrace();rn rn if (Build.VERSION.SDK_INT >= 24) rn imageUri = FileProvider.getUriForFile(MainActivity.this, "com.wang.zhihai" +rn ".cameratest" +rn ".fileprovider", outputImage);rn else rn imageUri = Uri.fromFile(outputImage);rn rn //启动相机rn Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");rn intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);rn startActivityForResult(intent, TAKE_PHOTO);rn rn );rn rnrnrn @Overridern protected void onActivityResult(int requestCode, int resultCode, Intent data) rn super.onActivityResult(requestCode, resultCode, data);rn switch (requestCode) rn case TAKE_PHOTO:rn if (resultCode == RESULT_OK) rn try rn Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver()rn .openInputStream(imageUri));rn picture.setImageBitmap(bitmap);rn catch (FileNotFoundException e) rn e.printStackTrace();rn rn rn break;rn default:rn break;rn rn rnrn```rnrnMenifest 文件:rn```rnrnrn rn rnrn rn rn rn rn rn rn rnrn rn rn rnrn rnrnrn```rnfile_paths文件:rnrn```rn rnrn rnrnrn```rn我的手机是华为Mate 10, Android 8.0 ,运行后拍照,储存拍摄的照片到布局文件的ImageView控件中。点击完成拍摄APP就闪退了。log显示NullPointerException。rn![图片说明](https://img-ask.csdn.net/upload/201803/20/1521516895_79394.png)rnrn报错的代码在onActivityResult 方法的 picture.setImageBitmap(bitmap); rn求大神帮忙!
camera照片储存路径
求获取camera照片储存路径办法...rn真心求教啊~~~`
第一行安卓代码——调用摄像头拍照8.3.1
//最开始是没想写Blog的,不过零星的知识也确实需要总结,以后也会不断补充这本书的内容和安卓学习中的收获画重点:调用摄像头分为简单的几步 ————————————————————————————— 1、新建文件,以保留拍摄的照片 2、相机就是一个活动,需要利用内容提供器获得相机拍摄的照片 ————————————————————————————— 新建CameraAlbumTest项目见
调用系统的Camera和相册/压缩照片
调用系统的Camera1.这只是简单的调用一下摄像头,然后拍一张照片。这个命令是基于Intent的,需要在setAction中添加调用摄像头的语句,然后利用Intent.putExtra将得到的照片存放到file里 最后复写onActivityResult,将拍下来的照片显示到ImageView上2.需要权限<uses-permission android:name="android.permis
《第一行代码》调用摄像头程序问题
Android第一行代码,第八章8.3调用摄像头和相册,调用摄像头的时候运行程序报错:java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Android/data/com.example.cameratest/cache/output_image.j...
调用Camera拍照的问题
调用takePicture(null, null, mPictureCallback);rnrn这个方法调用后会生成一张刚才拍照的效果图,不想生成这个图片,想在mPictureCallback方法中对图片做个处理再显示出来,请问该怎样做? rnrn就这点分了,帮个忙吧!
VB.NET Camera 拍照,照片保存。
VB.NET Camera 拍照,照片保存。
Camera Android 照片管理程序(2)
可以参照: http://blog.csdn.net/BonardGalton/archive/2010/03/07/5354722.aspx
第一行代码———removeAllViews()的问题
问题描述:在完成了第一行代码的酷欧天气的手动刷新功能之后发现了如下问题。 刷新或者手动更换城市之后 天气预报出现了两次。下面上相关代码 private void showWeatherInfo(WeatherForecastBean weather){ String cityName = Utility.handleString(weather.getBasic().getLo...
阅读《第一行代码》的问题
看到《第一行代码》的书中,有这样一个知识点,就是可以通过onSaveInstanceState(Bundle bundle)n方法来保存在活动被销毁后来保存数据,可是我使用finish()和Back键也是不可以调用n此方法,后来网上说要系统自动销毁活动时才会调用这个方法,我想模拟系统自动销毁活动n不知道大神们有没有什么好的办法?
NullPointerException异常,代码如下!
我写一个就是JS脚本的提示,传进一个字符串参数。用out.println输出。rn我在检查传进来的字符是有值的,我用System.out.println输出过,是有值并不是空值 。rnrn我在一个servlet里调用这个方法的时候,就会出现NullPointerException异常。rn调 用的代码是这样的:rn...rnAlertInfo ai = new AlertInfo();rn...rnai.alertAndBack("没有找到该用户!");rn...rnrnAlertInfo类的代码:rnrnpackage publicInfo;rnimport javax.servlet.ServletException;rnimport javax.servlet.http.HttpServletResponse;rnrnimport java.io.IOException;rnimport java.io.PrintWriter;rnrnpublic class AlertInfo rn private String strReturnInfoStar = " ";rn private String strReturnInfo = ""; rn HttpServletResponse response;rn public void alertAndBack(String strAlertInfo)throws ServletException, IOExceptionrn strAlertInfo = strReturnInfoStar + "alert('"+strAlertInfo+"');history.go(-1);" + strReturnInfoEnd; rn tryrn PrintWriter out = response.getWriter();rn out.println(strAlertInfo);rn out.close();rn catch(NullPointerException e)rn System.out.println(strAlertInfo);rn System.out.println(e.toString());rn rn return;rn rnrnrn/*系统调试窗口显示的是:rn rnjava.lang.NullPointerExceptionrn第一行是字符串值 rn*/rnrn不知道问题出在哪里,刚学没几天,还摸不着头? rn
BullseyeCoverage 8.3.1
BullseyeCoverage c++程序覆盖测试工具
NullPointerException问题
exception rnrnorg.apache.jasper.JasperException: An exception occurred processing JSP page /deleteSong.jsp at line 39rnrn36: rn37: <%rn38: List songList =(List)(request.getAttribute("songList"));rn39: out.println(songList.size());rn40: for(int i=0;irn rn <%=song.getSgID()%>rn <%=song.getSgName() %>rn <%=song.getSingerID()%>rn <%=song.getStID() %>rn <%=song.getSlID()%>rn 删除rn rn rn <%rn rnrn %>
nullpointerException问题
在一个保存文件的界面,如果没有输入文件名就退出的话,就产生了这个空指针异常,请问有什么方法避免
NullPointerException 问题
那位高手帮忙指点一下:rnjava.lang.NullPointerExceptionrn org.apache.jsp.goods.add_005fgoods_jsp._jspService(add_005fgoods_jsp.java:89)rn org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:856)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:856)rnrn源程序: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>rnrnrn 信息录入rn rn rnrn<%String gid = request.getParameter("gid");%>rn rn rn rn 商品管理rn >>rn 商品录入rn>> rn rn rn rn 商品IDrn rn rn ( *rn 必填) rn rn rn<%rn Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");rn Connection conn=DriverManager.getConnection("jdbc:odbc:ecn","","");rn Statement stmt=null;rn //库存有记录则不需要输入该产品的详细信息,否则要输入,默认是无记录。rn String exist = "";rn if (!gid.equals("")) rn try rn stmt = conn.createStatement();rn ResultSet rs = stmt.executeQuery("select gid from goods_info where gid=" + gid);rn if (rs.next())rn exist = "yes";rn elsern exist="no";rn rs.close();rn stmt.close();rn conn.close();rn rn catch (SQLException e) rn rn%>rn rn rn rn 你添加的产品是新产品,需要 录入以下信息!rn rn rn 商品名称rn rn rn ( *rn 必填) rn rn rn 规格型号rn rn rn rn rn rn rn 出售价格rn rn rn ( *rn 必填) rn rn rn 产品图片rn rn rn rn rn rn 入库数量rn rn rn rn ( *rn 必填) rn rn rn rn rn rn rnrn rn rnrnrnrnrn rn
NullPointerException 问题。
代码如下:rn<%@ page contentType="test/html;charset=GBK" %>rn<%@ page language="java" import ="java.sql.*" %>rnrnrnrn fdsfsrnrnrn rn rn rn rn id:rn rn rn data1:rn rn rn data2:rn rn rn<% ResultSet rs=conn.executeQuery("select * from test1");rnString id="";rnint data1=0;rnint data2=0;rnrnrnid=rs.getString("id");rndata1=rs.getInt("data1");rndata2=rs.getInt("data2");rn%>rn rn rn <%=id%>rn rn rn <%=data1%>rn rn rn <%=data2%>rn rnrn<%rnrnrs.close();rn%>rnrnrnrnrnrn错误提示:rnHTTP Status 500 - rnrn--------------------------------------------------------------------------------rnrntype Exception reportrnrnmessage rnrndescription The server encountered an internal error () that prevented it from fulfilling this request.rnrnexception rnrnorg.apache.jasper.JasperExceptionrn org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:802)rnrnrnroot cause rnrnjava.lang.NullPointerExceptionrn org.apache.jsp.conn_jsp._jspService(conn_jsp.java:78)rn org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:802)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:802)rnrnrnnote The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.rnrn。怎么也搞不定。。还有个类似的程序也是一样的问题。是我没配好还是什么没加?还是代码有问题??前提:数据库已经打开。
调用Camera进行照相并将照片返回到App界面
讲到了 打开手机相机 照相对照片进行 大小处理 显示到自己的App上面 手机横竖屏时 保存View的当前状态 App按钮点击后触发打开Camera的事件 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);然后,给intent添加数据,存储在ContentResolver中,方便显示在App
第一行代码
《第一行代码》 Android 学习记录Android的日志工具Log(LogCat) Log.v() 打印最为琐碎的,意义最小的日志信息。等级:verbose Log.d() 打印调试信息。等级:debug Log.i() 打印比较重要的的数据。 等级:info Log.w() 打印警告信息。 等级:warn Log.e() 打印错误信息。等级:errorprotected vo
postgresql 8.3.1
postgresql 8.3.1 source
Android第一行代码-入门之第一行代码
谨以此记下自己Android的学习历程。 菜鸟入门。。。
android camera
java.lang.RuntimeException: getParameters failed (empty parameters) Camera.getParameters()的调用要位于camera.unlock()前,如果没有调用camera.unlock(),录制的视频不能播放。
NullPointerException的问题
public class A rnrn public static void main(String[] args) rn String a1="1,2,3";rn String a2[]=a1.split(",");rn String a3[]=null;rn int i=0;rn while(a2[i]!=null)rn rn switch(Integer.parseInt(a2[i]))rn rn case 1:a3[0]="image1";break;rn case 2:a3[0]="image2";break;rn default:a3[i]=null;rn rn i++;rn System.out.println(a3[i]);rn rn rn rn rnrn这段代码运行时为什么会出现NullpointerException的错误呢?
ASP调用储存过程的问题
ASP页面: rnrnrn<% rnmiao=timer rnrnsl=request("sl") rnslp=request("slp") rnCx=request("cx") rnrnif sl="" then sl=0 rnif slp="" then slp=20 rnrnset recom = server.createobject("adodb.command") rnrecom.activeconnection = Conn rnrecom.commandtype = 4 rnrecom.commandtext = "p" rnColName=20 '每页显示多少条记录 rnrecom.Parameters.Append recom.CreateParameter("@ColName",202,1,100,ColName) rnrecom.Parameters.Append recom.CreateParameter("@Cx",202,1,,Cx) rnrecom.Parameters.Append recom.CreateParameter("@sl",3,1,,sl) rnrecom.Parameters.Append recom.CreateParameter("@slp",3,1,,slp) rnset rs = recom.execute () rn%> rnrnrnrnrnSQL 储存过程 rnrnCREATE PROCEDURE P rn( rn@ColName varchar(20), --显示多少条记录 rn@sl int, rn@slp int, rn@cx varchar(20) rn) rnAS rndeclare @sql varchar(100) rnif @cx="" begin rnset @sql="select top "+str(@ColName)+" id,text,riqi from aa where id>"+str(@sl)+" and id<"+str(@slp)+" order by id asc" rnend rnelse begin rnset @sql="select top "+str(@ColName)+" id,text,riqi from aa where riqi like '%"+@cx+"%' order by id asc" rnend rnexec(@sql) rnrnGO rnrn提示查不到记录。是不是调用储存过程有问题
ADO调用储存过程问题??
::CoInitialize(NULL); rn _ParameterPtr inParam=NULL;rn _variant_t vtEmpty (DISP_E_PARAMNOTFOUND, VT_ERROR);rn Conn1.CreateInstance( __uuidof(Connection )); rn Conn1->Open("DSN=demo;UID=system;PWD=manager","","",-1);rn _CommandPtr pCommand;rn _RecordsetPtr MySet;rn pCommand.CreateInstance(__uuidof(Command));rn pCommand->ActiveConnection=Conn1;rn pCommand->CommandType=adCmdStoredProc; rn*****// inParam=pCommand->CreateParameter( _bstr_t "input"),adChar,adParamInput,10)rn inParam-> Value="ming";rn pCommand->Parameters->Append(inParam);rn pCommand->Parameters->Refresh(); rn pCommand->Parameters->Item["@input"]->Value ="ming";rn pCommand->CommandText="procedure_db";rn MySet=pCommand->Execute(NULL,NULL,adCmdUnknown);rnrn ::CoUninitialize(); rnrn代码如上,为什么运行到标记处*****// 就出错??rn其中procedure_db为一只带输入参数的存储过程。请教!
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表