Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致命异常,java语言空指针异常_Java_Android_Eclipse - Fatal编程技术网

致命异常,java语言空指针异常

致命异常,java语言空指针异常,java,android,eclipse,Java,Android,Eclipse,我下面的代码没有显示错误,但不会执行 package my.project.mil; import android.content.Context; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android

我下面的代码没有显示错误,但不会执行

package my.project.mil;

import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Cbdata extends MainActivity {

    public String str;

    public void onReceive(Context context, Intent intent) {
        //---get the CB message passed in---
        Bundle bundle = intent.getExtras();        
        SmsCbMessage[] msgs = null;
        str = "";            
        if (bundle != null)  {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsCbMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++) {
                msgs[i] = SmsCbMessage.createFromPdu((byte[])pdus[i]);                
                str += "CB " + msgs[i].getGeographicalScope() + msgs[i].getMessageCode() + msgs[i].getMessageIdentifier() + msgs[i].getUpdateNumber();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }}
    }

    SQLiteDatabase cd = openOrCreateDatabase("MLIdb", MODE_WORLD_READABLE, null);



    Button submit;
Button viewdb;
EditText name;

@Override
    public void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.seventh);

    viewdb = (Button) findViewById(R.id.viewdb);
    submit = (Button) findViewById(R.id.submit);
    name = (EditText) findViewById(R.id.name);

    submit.setOnClickListener(new View.OnClickListener() 
    {

        public void onClick(View arg0) {

            String locname = name.getText().toString();
            if (locname.length()>0)
            {

                cd.execSQL("CREATE TABLE IF NOT EXITSTS MLITable (CblocationCode INT(10), CblocationName VARCHAR);");
                cd.execSQL("INSERT INTO MLITable VALUES (' ',' ');" +str +locname);
                Toast.makeText(getBaseContext(), "value successfully    entered.", Toast.LENGTH_LONG).show();
            }
            else
            {
                Toast.makeText(getBaseContext(), "Please enter the location name, for example 'Home'.", Toast.LENGTH_LONG).show();
            }

        }
    });

    cd.close();

    viewdb.setOnClickListener(new View.OnClickListener() 
    {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            // here comes the code for viewing the database


        }
    });
}

}
包my.project.mil;
导入android.content.Context;
导入android.content.Intent;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类Cbdata扩展main活动{
公共字符串str;
公共void onReceive(上下文、意图){
//---获取传入的CB消息---
Bundle=intent.getExtras();
SmsCbMessage[]msgs=null;
str=“”;
if(bundle!=null){
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新的SmsCbMessage[pdus.length];
对于(int i=0;i0)
{
execSQL(“如果不存在,则创建表MLITable(CblocationCode INT(10),CblocationName VARCHAR);”;
execSQL(“插入到MLITable值(“”,”);“+str+locname);
Toast.makeText(getBaseContext(),“值已成功输入”,Toast.LENGTH_LONG.show();
}
其他的
{
Toast.makeText(getBaseContext(),“请输入位置名称,例如“Home.”,Toast.LENGTH_LONG).show();
}
}
});
cd.close();
viewdb.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图arg0){
//TODO自动生成的方法存根
//下面是查看数据库的代码
}
});
}
}
我的错误日志如下所示,我也检查了我的清单和MainActivity文件,但没有任何运气

我的代码应该收集用户的基站区号,并将其保存在用户选择名称的数据库上,该数据库由两个属性组成,一个是从用户处收集的位置名称,另一个是从onReceive方法获得的基站广播塔信息,单独使用onReceive方法可以很好地工作

只有当我将数据库集成到代码中时,才会出现此问题。

多谢各位

SQLiteDatabase cd = openOrCreateDatabase("MLIdata", MODE_WORLD_WRITEABLE, null);
试着把这条线换成

SQLiteDatabase cd = openOrCreateDatabase("MLIdata", MODE_WORLD_WRITEABLE);

我在上述代码中的错误

  • 由于连接数据库的方法错误,cd未全部创建
  • 存在拼写错误
  • 插入的方法错误
  • 最终正确的代码是

    public class Cbdata extends MainActivity {
    
        public String str;
    
        public void onReceive(Context context, Intent intent) {
            //---get the CB message passed in---
            Bundle bundle = intent.getExtras();        
            SmsCbMessage[] msgs = null;
            str = "";            
            if (bundle != null)  {
                //---retrieve the SMS message received---
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsCbMessage[pdus.length];            
                for (int i=0; i<msgs.length; i++) {
                    msgs[i] = SmsCbMessage.createFromPdu((byte[])pdus[i]);                
                    str += "CB " + msgs[i].getGeographicalScope() + msgs[i].getMessageCode() + msgs[i].getMessageIdentifier() + msgs[i].getUpdateNumber();                     
                    str += " :";
                    str += msgs[i].getMessageBody().toString();
                    str += "\n";        
                }}
    }
    
    Button submit;
    Button viewdb;
    EditText name;
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seventh);
    
    
    
        viewdb = (Button) findViewById(R.id.viewdb);
        submit = (Button) findViewById(R.id.submit);
        name = (EditText) findViewById(R.id.name);
    
        submit.setOnClickListener(new View.OnClickListener() 
        {
    
            public void onClick(View arg0) {
    
                String locname = name.getText().toString();
                if (locname.length()>0)
                {
                    SQLiteDatabase cd = openOrCreateDatabase("mydata", MODE_WORLD_READABLE, null);
                    cd.execSQL("CREATE TABLE IF NOT EXISTS MLITable (CblocationCode INT(10), CblocationName VARCHAR);");
                    cd.execSQL("INSERT INTO MLITable VALUES ('"+str+ "','"+locname+ "');");
                    Toast.makeText(getBaseContext(), "value successfully entered.", Toast.LENGTH_LONG).show();
                    cd.close();
                }
                else
                {
                    Toast.makeText(getBaseContext(), "Please enter the location name, for example 'Home'.", Toast.LENGTH_LONG).show();
                }
    
            }
        });
    
    
    
        viewdb.setOnClickListener(new View.OnClickListener() 
        {
    
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                // here comes the code for viewing the database
    
    
            }
        });
    }
    
    
    
    }
    
    public类Cbdata扩展main活动{
    公共字符串str;
    公共void onReceive(上下文、意图){
    //---获取传入的CB消息---
    Bundle=intent.getExtras();
    SmsCbMessage[]msgs=null;
    str=“”;
    if(bundle!=null){
    //---检索收到的SMS消息---
    Object[]pdus=(Object[])bundle.get(“pdus”);
    msgs=新的SmsCbMessage[pdus.length];
    对于(int i=0;i0)
    {
    SQLiteDatabase cd=openOrCreateDatabase(“mydata”,模式为世界可读,空);
    execSQL(“如果不存在创建表MLITable(CblocationCode INT(10),CblocationName VARCHAR);”;
    execSQL(“插入到MLITable值(““+str+”,“+locname+”);”;
    Toast.makeText(getBaseContext(),“值已成功输入”,Toast.LENGTH_LONG.show();
    cd.close();
    }
    其他的
    {
    Toast.makeText(getBaseContext(),“请输入位置名称,例如“Home.”,Toast.LENGTH_LONG).show();
    }
    }
    });
    viewdb.setOnClickListener(新视图.OnClickListener()
    {
    公共void onClick(视图arg0){
    //TODO自动生成的方法存根
    //下面是查看数据库的代码
    }
    });
    }
    }
    
    我已经按照您的建议进行了更改,但运气不好!他们之间有什么区别?