无法启动的活动ComponentInfo当新的活动被称为:NullPointerException异常 [英] Unable to start activity ComponentInfo when new activity is called: NullPointerException
问题描述
我收到此错误,当我通过故意调用一个新的活动,并通过意向发送值 在这里,我给了类调用NW类及codeS分别请检查日志猫太我得到强制关闭我使用的Android版本4.0.3
活动调用另一个活动时,btnf被称为
包dlp.android.digichronicle;
进口java.io.IOException异常;
进口的java.util.ArrayList;
进口android.app.Activity;
进口android.content.Intent;
进口android.database.Cursor;
进口android.database.SQLException;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteException;
进口android.os.Bundle;
进口android.text.method.ScrollingMovementMethod;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.TextView;
进口android.widget.Toast;
公共类显示终端延伸活动实现View.OnClickListener {
按钮btnf; //做起来难
TextView的TVF; // OK
EditText上EDTF,edt2; //数据库TXT
/ **第一次创建活动时调用。 * /
DBHandandler myDbHelper =新DBHandandler(本);
SQLiteDatabase MyDatabase的;
字符串stattionlist,S1;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.displ);
TVF =(TextView中)findViewById(R.id.tvf);
EDTF =(EditText上)findViewById(R.id.edtf);
edt2 =(EditText上)findViewById(R.id.edt2);
btnf =(按钮)findViewById(R.id.btnf);
btnf.setOnClickListener(本);
第一();
}
私人无效第一(){
字符串S1 =,S2 = second.ge;
this.myDbHelper =新DBHandandler(本);
尝试 {
FetchingData();
}赶上(的SQLException E){
// TODO自动生成的catch块
e.printStackTrace();
}
myDbHelper.openDataBase();
MyDatabase的= myDbHelper.getWritableDatabase();
的System.out.println(执行);
MyDatabase的= myDbHelper.getReadableDatabase();
的System.out.println(sure2); //调试信息
//调用open()函数,它会显示在表中的EditText文本
//使用setText方法
//函数在DBHanadanler.java文件中定义
如果(s2.equalsIgnoreCase(备忘录)){
S1 = myDbHelper.open(备忘录,MyDatabase的);
的System.out.println(叫备忘录+ S1 + S2);
}
否则,如果(s2.equalsIgnoreCase(提示))
S1 = myDbHelper.open(提醒,MyDatabase的);
否则,如果(s2.equalsIgnoreCase(任务))
S1 = myDbHelper.open(任务,MyDatabase的);
否则,如果(s2.equalsIgnoreCase(事件))
S1 = myDbHelper.open(事件,MyDatabase的);
否则,如果(s2.equalsIgnoreCase(账户))
S1 = myDbHelper.open(户口,MyDatabase的);
的System.out.println(后开式);
edtf.setText(S1);
的System.out.println(字符串是:+ S1 +第二次); //调试信息
edtf.setMovementMethod(新ScrollingMovementMethod());
tvf.setText(S2);
}
//调用的是present在datbase的方法
私人无效FetchingData()抛出的SQLException {
尝试 {
myDbHelper.onCreateDataBase();
}赶上(IOException异常IOE){
抛出新的错误(无法创建数据库);
}
}
@覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
如果(V == btnf)
{
S1 = edtf.getText()的toString();
意图I3 =新的意图(displ.this,inter.class);
i3.putExtra(价值,S1);
startActivity(I3);
}
}
}
新叫做活动类
包dlp.android.digichronicle;
进口java.io.IOException异常;
进口android.app.Activity;
进口android.content.Intent;
进口android.database.SQLException;
进口android.database.sqlite.SQLiteDatabase;
进口android.os.Bundle;
进口android.util.Log;
进口android.widget.Toast;
公共类间扩展活动{
DBHandandler myDbHelper;
SQLiteDatabase MyDatabase的;
字符串s;
字符串stattionlist,数据库名=部件;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
叠B = getIntent()getExtras()。
的System.out.println(B);
如果(B!= NULL)
{
S = b.getString(价值);
的System.out.println(中间+ S);
Log.e(XXXX2,多个);
尝试 {
FetchingData();
myDbHelper.openDataBase();
的System.out.println(******打开的DB后);
MyDatabase的= myDbHelper.getWritableDatabase();
的System.out.println(之后######可写);
的System.out.println(######更新后的字符串:+ S);
字符串s2 = second.ge;
如果(s2.equalsIgnoreCase(备忘录)){
myDbHelper.updateevent(备忘录,MyDatabase的,S);
的System.out.println(叫备忘录+ S2 + S);
}
否则,如果(s2.equalsIgnoreCase(提示))
myDbHelper.updateevent(提醒,MyDatabase的,S);
否则,如果(s2.equalsIgnoreCase(任务))
myDbHelper.updateevent(任务,MyDatabase的,S);
否则,如果(s2.equalsIgnoreCase(事件))
myDbHelper.updateevent(事件,MyDatabase的,S);
否则,如果(s2.equalsIgnoreCase(账户))
myDbHelper.updateevent(户口,MyDatabase的,S);
Toast.makeText(getApplicationContext(),更新,Toast.LENGTH_LONG).show();
}赶上(的SQLException E){
// TODO自动生成的catch块
e.printStackTrace();
}
myDbHelper.close();
Mydatabase.close();
意图I3 =新的意图(inter.this,second.class);
startActivity(I3);
的System.out.println(按钮结束btnf);
}
// stattionlist = this.myDbHelper.updateevent(MyDatabase的,S1);
// Toast.makeText(getApplicationContext(),+ s1,100).show();
}
私人无效FetchingData(){
// TODO自动生成方法存根
尝试 {
myDbHelper.onCreateDataBase();
}赶上(IOException异常IOE){
抛出新的错误(无法创建数据库);
}
尝试 {
myDbHelper.openDataBase();
MyDatabase的= myDbHelper.getWritableDatabase();
的System.out.println(执行);
}赶上(的SQLException SQLE){
扔SQLE;
}
}
//意图I2 =新的意图(intermediate.this,second.class);
// startActivity(I 2);
}
数据库辅助类
包dlp.android.digichronicle; // UR包名
进口java.io.FileOutputStream中;
进口java.io.IOException异常;
进口的java.io.InputStream;
进口java.io.OutputStream中;
进口的java.util.ArrayList;
进口android.content.ContentValues;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.SQLException;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteException;
进口android.database.sqlite.SQLiteOpenHelper;
进口android.widget.Toast;
公共类DBHandandler扩展SQLiteOpenHelper {
私有静态字符串DB_PATH =/data/data/dlp.android.digichronicle/databases/;
私有静态字符串DB_NAME =widget.sqlite;
私有静态字符串TABLENAME =部件;
私人SQLiteDatabase MyDatabase的;
私人最终语境myContext;
公共静态最后弦乐KEY_MEM =备忘录;
公共静态最后弦乐KEY_TAS =任务;
公共静态最后弦乐KEY_REM =提醒;
公共静态最后弦乐KEY_EVE =事件;
公共静态最后弦乐KEY_DAT =过时;
公共静态最后弦乐KEY_INC =收入;
公共静态最后弦乐KEY_EXP =EXP;
ArrayList的<字符串> SW;
字符串s =;
公共DBHandandler(上下文的背景下){
超级(上下文,DB_NAME,空,1);
// TODO自动生成构造函数存根
this.myContext =背景;
}
公众诠释onCreateDataBase()抛出IOException异常
{
布尔dbExist = checkDatabase();
如果(dbExist){
返回0;
}
其他 {
的System.out.println(onCreateDataBase方法开始执行);
this.getReadableDatabase();
copyDataBase();
返回1;
}
}
私人布尔checkDatabase(){
// TODO自动生成方法存根
SQLiteDatabase CHECKDB = NULL;
尝试
{
字符串mypath中= DB_PATH + DB_NAME;
CHECKDB = SQLiteDatabase.openDatabase(mypath中,空,SQLiteDatabase.OPEN_READWRITE);
}赶上(例外五){
// TODO:处理异常
}
如果(CHECKDB!= NULL){
checkDB.close();
}
返回CHECKDB!= NULL?真假;
}
私人无效copyDataBase()抛出IOException异常{
InputStream的myInput = myContext.getAssets()开(DB_NAME)。
//路径刚刚创建的空分贝
字符串outFileName = DB_PATH + DB_NAME;
//打开空分贝的输出流
的OutputStream myOutput =新的FileOutputStream(outFileName);
//传输的字节从inputfile中的OUTPUTFILE
byte []的缓冲区=新的字节[1024];
INT长;
而((长度= myInput.read(缓冲液))大于0){
myOutput.write(缓冲液,0,长度);
}
//关闭流
myOutput.flush();
myOutput.close();
myInput.close();
}
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
// TODO自动生成方法存根
}
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
// TODO自动生成方法存根
}
公共无效的openDatabase()抛出的SQLException {
//打开数据库
字符串mypath中= DB_PATH + DB_NAME;
MyDatabase的= SQLiteDatabase.openDatabase(mypath中,空,SQLiteDatabase.OPEN_READONLY);
}
公共串开路(字符串S3,SQLiteDatabase MyDatabase的)
{
ArrayList的<字符串>名单=新的ArrayList<字符串>();
的System.out.println(B4字符串是:+清单);
字符串s =;
尝试 {
的System.out.println(字符串得到的是+ S3);
字符串DT = MainActivity.g;
的System.out.println(取得日期为+ DT);
光标C = Mydatabase.rawQuery(选择++ S3 +
+的小工具,其中日期='+ DT +',NULL);
的System.out.println(之后光标);
如果(c.moveToFirst())
{
的System.out.println(光标+ c.moveToFirst());
做 {
的System.out.println(之前参数:columnIndex);
list.add(c.getString(c.getColumnIndex(S3)));
的System.out.println(之后参数:columnIndex);
的System.out.println(字符串是:+清单);
}而(c.moveToNext());
}
c.close();
}赶上(SQLiteException SE){
Mydatabase.close();
的System.out.println(异常);
}
S = list.toString();
INT的len = s.length();
S = s.substring(1,LEN - 1);
的System.out.println(字符串是:+清单);
的System.out.println(字符串是:+ S);
返回S;
}
公共字符串eventdia(SQLiteDatabase mydatabase1){
ArrayList的<字符串>名单=新的ArrayList<字符串>();
的System.out.println(事件对话的开始+清单);
字符串s =;
尝试 {
的System.out.println(歌厅事件);
字符串DT = MainActivity.g;
的System.out.println(获得活动日期+ DT);
光标C = mydatabase1.rawQuery(选择小部件的事件,其中日期='+ DT +',
空值);
如果(c.moveToFirst())
{
的System.out.println(光标+ c.moveToFirst());
做 {
list.add(c.getString(c.getColumnIndex(事件)));
的System.out.println(字符串是:+清单);
}而(c.moveToNext());
}
c.close();
}赶上(SQLiteException SE){
mydatabase1.close();
的System.out.println(异常);
}
S = list.toString();
INT的len = s.length();
S = s.substring(1,LEN - 1);
的System.out.println(字符串是:+清单);
的System.out.println(字符串是:+ S);
返回S;
}
公共字符串签(SQLiteDatabase mydatabase1){
ArrayList的<字符串>名单=新的ArrayList<字符串>();
的System.out.println(B4字符串是:+清单);
字符串s =;
尝试 {
的System.out.println(歌厅事件);
字符串DT = MainActivity.g;
的System.out.println(取得日期为+ DT);
光标C = mydatabase1.rawQuery(选择小部件的事件,其中日期='+ DT +',
空值);
如果(c.moveToFirst())
{
的System.out.println(光标+ c.moveToFirst());
做 {
list.add(c.getString(c.getColumnIndex(事件)));
的System.out.println(字符串是:+清单);
}而(c.moveToNext());
}
c.close();
}赶上(SQLiteException SE){
mydatabase1.close();
的System.out.println(异常);
}
S = list.toString();
INT的len = s.length();
S = s.substring(1,LEN - 1);
的System.out.println(字符串是:+清单);
的System.out.println(字符串是:+ S);
返回S;
}
公共无效updateevent(字符串GE,SQLiteDatabase mydatabase2,串S1){
// TODO自动生成方法存根
字符串DT = MainActivity.g;
的System.out.println(前######查询);
ContentValues cvupdate =新ContentValues();
cvupdate.put(GE,S1);
mydatabase2.update(TABLENAME,cvupdate,KEY_DAT +=+ DT,NULL);
// mydatabase2.rawQuery(更新小工具设置备忘录=++ S1 ++在哪里过时='+ DT +',NULL);
// mydatabase2.rawQuery(更新小工具设置++ GE +=+ S1 ++哪里哪里约会='+ DT +',NULL);
的System.out.println(后######查询);
}
//函数中插入新记录
公共无效INSERTINTO(SQLiteDatabase mydatabase2,字符串日期,字符串备忘录,字符串的任务,
字符串的提醒,浮动收入,字符串的事件,浮动EXP)
{
ContentValues数据= createContentValues(日期,备忘录,任务,提醒,收入,事件,EXP);
的System.out.println(数据+数据+是);
mydatabase2.insert(TABLENAME,空,数据);
的System.out.println(记录完成);
}
//返回该数据库的内容
私人ContentValues createContentValues(字符串日期,字符串备忘录,字符串的任务,
字符串的提醒,浮动收入,字符串的事件,浮动EXP)
{
ContentValues值=新ContentValues();
values.put(KEY_DAT,日期);
values.put(KEY_MEM,备忘录);
values.put(KEY_TAS,任务);
values.put(KEY_REM,提醒);
values.put(KEY_INC,收入);
values.put(KEY_EVE,事件);
values.put(KEY_EXP,EXP);
返回值;
}
//这里写乌尔retreival方法
}
登录猫错误
D / AndroidRuntime(553):关闭虚拟机
W / dalvikvm(553):主题ID = 1:螺纹退出与未捕获的异常(组= 0x409c01f8)
E / AndroidRuntime(553):致命异常:主要
E / AndroidRuntime(553):java.lang.RuntimeException的:无法启动的活动ComponentInfo {dlp.android.digichronicle / dlp.android.digichronicle.inter}:显示java.lang.NullPointerException
E / AndroidRuntime(553):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
E / AndroidRuntime(553):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E / AndroidRuntime(553):在android.app.ActivityThread.access $ 600(ActivityThread.java:123)
E / AndroidRuntime(553):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)
E / AndroidRuntime(553):在android.os.Handler.dispatchMessage(Handler.java:99)
E / AndroidRuntime(553):在android.os.Looper.loop(Looper.java:137)
E / AndroidRuntime(553):在android.app.ActivityThread.main(ActivityThread.java:4424)
E / AndroidRuntime(553):在java.lang.reflect.Method.invokeNative(本机方法)
E / AndroidRuntime(553):在java.lang.reflect.Method.invoke(Method.java:511)
E / AndroidRuntime(553):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
E / AndroidRuntime(553):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E / AndroidRuntime(553):在dalvik.system.NativeStart.main(本机方法)
E / AndroidRuntime(553):由:显示java.lang.NullPointerException
E / AndroidRuntime(553):在dlp.android.digichronicle.inter.FetchingData(inter.java:84)
E / AndroidRuntime(553):在dlp.android.digichronicle.inter.onCreate(inter.java:28)
E / AndroidRuntime(553):在android.app.Activity.performCreate(Activity.java:4465)
E / AndroidRuntime(553):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E / AndroidRuntime(553):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E / AndroidRuntime(553):11 ...更多
I / dalvikvm(553):主题ID = 3:反应信号3
I / dalvikvm(553):写的堆栈跟踪到/data/anr/traces.txt
I / dalvikvm(553):主题ID = 3:反应信号3
I / dalvikvm(553):写的堆栈跟踪到/data/anr/traces.txt
I / dalvikvm(553):主题ID = 3:反应信号3
I / dalvikvm(553):写的堆栈跟踪到/data/anr/traces.txt
您需要实例 myDbHelper
在间
活动的的onCreate()
(你们这样做是在显示终端
的活动,但不是在间
活动):
DBHandandler myDbHelper =新DBHandandler(本);
因为 FetchingData()
@ 28行调用 myDbHelper.onCreateDataBase();
,而现在还没有实例化。
I am getting this error when i call a new activity via intent and sending values via intent here i gave the class calling nw class and their codes separately please check the log cat too i am getting force close i am using android version 4.0.3
Activity calling another activity when btnf is called
package dlp.android.digichronicle;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class displ extends Activity implements View.OnClickListener {
Button btnf;// done
TextView tvf;// ok
EditText edtf, edt2;// db txt
/** Called when the activity is first created. */
DBHandandler myDbHelper = new DBHandandler(this);
SQLiteDatabase Mydatabase;
String stattionlist, s1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.displ);
tvf = (TextView) findViewById(R.id.tvf);
edtf = (EditText) findViewById(R.id.edtf);
edt2 = (EditText) findViewById(R.id.edt2);
btnf = (Button) findViewById(R.id.btnf);
btnf.setOnClickListener(this);
first();
}
private void first() {
String s1 = "", s2 = second.ge;
this.myDbHelper = new DBHandandler(this);
try {
FetchingData();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myDbHelper.openDataBase();
Mydatabase = myDbHelper.getWritableDatabase();
System.out.println("executed");
Mydatabase = myDbHelper.getReadableDatabase();
System.out.println("sure2");// debug info
// calling open() function which will show the text in table in EditText
// using SetText method
// Function is defined in DBHanadanler.java file
if (s2.equalsIgnoreCase("memo")) {
s1 = myDbHelper.open("memo", Mydatabase);
System.out.println("Called memo" + s1 + s2);
}
else if (s2.equalsIgnoreCase("reminder"))
s1 = myDbHelper.open("reminder", Mydatabase);
else if (s2.equalsIgnoreCase("tasks"))
s1 = myDbHelper.open("tasks", Mydatabase);
else if (s2.equalsIgnoreCase("events"))
s1 = myDbHelper.open("events", Mydatabase);
else if (s2.equalsIgnoreCase("accounts"))
s1 = myDbHelper.open("accounts", Mydatabase);
System.out.println("after open");
edtf.setText(s1);
System.out.println("string is : " + s1 + "2nd time");// debug info
edtf.setMovementMethod(new ScrollingMovementMethod());
tvf.setText(s2);
}
// call the method which is present in datbase
private void FetchingData() throws SQLException {
try {
myDbHelper.onCreateDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == btnf)
{
s1 = edtf.getText().toString();
Intent i3 = new Intent(displ.this, inter.class);
i3.putExtra("value", s1);
startActivity(i3);
}
}
}
Newly called activity class
package dlp.android.digichronicle;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class inter extends Activity {
DBHandandler myDbHelper;
SQLiteDatabase Mydatabase;
String s;
String stattionlist, DBname = "widgets";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
System.out.println(b);
if (b != null)
{
s = b.getString("value");
System.out.println("INtermediate" + s);
Log.e("xxxx2", s);
try {
FetchingData();
myDbHelper.openDataBase();
System.out.println("****** After open db");
Mydatabase = myDbHelper.getWritableDatabase();
System.out.println("###### after writable");
System.out.println("###### updated string :" + s);
String s2 = second.ge;
if (s2.equalsIgnoreCase("memo")) {
myDbHelper.updateevent("memo", Mydatabase, s);
System.out.println("Called memo" + s2 + s);
}
else if (s2.equalsIgnoreCase("reminder"))
myDbHelper.updateevent("reminder", Mydatabase, s);
else if (s2.equalsIgnoreCase("tasks"))
myDbHelper.updateevent("tasks", Mydatabase, s);
else if (s2.equalsIgnoreCase("events"))
myDbHelper.updateevent("events", Mydatabase, s);
else if (s2.equalsIgnoreCase("accounts"))
myDbHelper.updateevent("accounts", Mydatabase, s);
Toast.makeText(getApplicationContext(), "updated", Toast.LENGTH_LONG).show();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myDbHelper.close();
Mydatabase.close();
Intent i3 = new Intent(inter.this, second.class);
startActivity(i3);
System.out.println("button end btnf");
}
// stattionlist=this.myDbHelper.updateevent(Mydatabase,s1);
// Toast.makeText(getApplicationContext()," "+s1,100).show();
}
private void FetchingData() {
// TODO Auto-generated method stub
try {
myDbHelper.onCreateDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.openDataBase();
Mydatabase = myDbHelper.getWritableDatabase();
System.out.println("executed");
} catch (SQLException sqle) {
throw sqle;
}
}
// Intent i2=new Intent(intermediate.this,second.class);
// startActivity(i2);
}
Database Helper class
package dlp.android.digichronicle; // ur package name
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class DBHandandler extends SQLiteOpenHelper {
private static String DB_PATH = "/data/data/dlp.android.digichronicle/databases/";
private static String DB_NAME = "widget.sqlite";
private static String TABLENAME = "widgets";
private SQLiteDatabase myDataBase;
private final Context myContext;
public static final String KEY_MEM = "memo";
public static final String KEY_TAS = "tasks";
public static final String KEY_REM = "reminder";
public static final String KEY_EVE = "events";
public static final String KEY_DAT = "dated";
public static final String KEY_INC = "income";
public static final String KEY_EXP = "exp";
ArrayList<String> sw;
String s = "";
public DBHandandler(Context context) {
super(context, DB_NAME, null, 1);
// TODO Auto-generated constructor stub
this.myContext = context;
}
public int onCreateDataBase() throws IOException
{
boolean dbExist = checkDatabase();
if (dbExist) {
return 0;
}
else {
System.out.println("onCreateDataBase method execution starts");
this.getReadableDatabase();
copyDataBase();
return 1;
}
}
private boolean checkDatabase() {
// TODO Auto-generated method stub
SQLiteDatabase checkDB = null;
try
{
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
} catch (Exception e) {
// TODO: handle exception
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() throws IOException {
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void openDataBase() throws SQLException {
// Open the database
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
public String open(String s3, SQLiteDatabase Mydatabase)
{
ArrayList<String> list = new ArrayList<String>();
System.out.println("b4 string is : " + list);
String s = "";
try {
System.out.println("string got is " + s3);
String dt = MainActivity.g;
System.out.println("Date obtained is " + dt);
Cursor c = Mydatabase.rawQuery("select " + " " + s3 + " "
+ "from widgets where dated='" + dt + "'", null);
System.out.println("after cursor");
if (c.moveToFirst())
{
System.out.println("cursor" + c.moveToFirst());
do {
System.out.println("before columnindex");
list.add(c.getString(c.getColumnIndex(s3)));
System.out.println("after columnindex");
System.out.println(" string is : " + list);
} while (c.moveToNext());
}
c.close();
} catch (SQLiteException se) {
Mydatabase.close();
System.out.println("exception");
}
s = list.toString();
int len = s.length();
s = s.substring(1, len - 1);
System.out.println("string is : " + list);
System.out.println("string is : " + s);
return s;
}
public String eventdia(SQLiteDatabase mydatabase1) {
ArrayList<String> list = new ArrayList<String>();
System.out.println("Event dialogue start " + list);
String s = "";
try {
System.out.println("geting event");
String dt = MainActivity.g;
System.out.println("Date obtained in events " + dt);
Cursor c = mydatabase1.rawQuery("select events from widgets where dated='" + dt + "'",
null);
if (c.moveToFirst())
{
System.out.println("cursor" + c.moveToFirst());
do {
list.add(c.getString(c.getColumnIndex("events")));
System.out.println(" string is : " + list);
} while (c.moveToNext());
}
c.close();
} catch (SQLiteException se) {
mydatabase1.close();
System.out.println("exception");
}
s = list.toString();
int len = s.length();
s = s.substring(1, len - 1);
System.out.println("string is : " + list);
System.out.println("string is : " + s);
return s;
}
public String checkin(SQLiteDatabase mydatabase1) {
ArrayList<String> list = new ArrayList<String>();
System.out.println("b4 string is : " + list);
String s = "";
try {
System.out.println("geting event");
String dt = MainActivity.g;
System.out.println("Date obtained is" + dt);
Cursor c = mydatabase1.rawQuery("select events from widgets where dated='" + dt + "'",
null);
if (c.moveToFirst())
{
System.out.println("cursor" + c.moveToFirst());
do {
list.add(c.getString(c.getColumnIndex("events")));
System.out.println(" string is : " + list);
} while (c.moveToNext());
}
c.close();
} catch (SQLiteException se) {
mydatabase1.close();
System.out.println("exception");
}
s = list.toString();
int len = s.length();
s = s.substring(1, len - 1);
System.out.println("string is : " + list);
System.out.println("string is : " + s);
return s;
}
public void updateevent(String ge, SQLiteDatabase mydatabase2, String s1) {
// TODO Auto-generated method stub
String dt = MainActivity.g;
System.out.println("###### before query");
ContentValues cvupdate = new ContentValues();
cvupdate.put(ge, s1);
mydatabase2.update(TABLENAME, cvupdate, KEY_DAT + "=" + dt, null);
// mydatabase2.rawQuery("update widgets set memo="+" "+s1+" "+" where dated='"+dt+"'",null);
// mydatabase2.rawQuery("update widgets set "+" "+ge+" = "+s1+" "+"where where dated='"+dt+"'",null);
System.out.println("###### after query");
}
// Function inserting new record
public void Insertinto(SQLiteDatabase mydatabase2, String date, String memo, String tasks,
String reminder, float income, String events, float exp)
{
ContentValues data = createContentValues(date, memo, tasks, reminder, income, events, exp);
System.out.println("data " + data + " is ");
mydatabase2.insert(TABLENAME, null, data);
System.out.println("record is done ");
}
// return a content of the database
private ContentValues createContentValues(String date, String memo, String tasks,
String reminder, float income, String events, float exp)
{
ContentValues values = new ContentValues();
values.put(KEY_DAT, date);
values.put(KEY_MEM, memo);
values.put(KEY_TAS, tasks);
values.put(KEY_REM, reminder);
values.put(KEY_INC, income);
values.put(KEY_EVE, events);
values.put(KEY_EXP, exp);
return values;
}
// write ur retreival methods here
}
Log cat errors
D/AndroidRuntime(553): Shutting down VM
W/dalvikvm(553): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
E/AndroidRuntime(553): FATAL EXCEPTION: main
E/AndroidRuntime(553): java.lang.RuntimeException: Unable to start activity ComponentInfo{dlp.android.digichronicle/dlp.android.digichronicle.inter}: java.lang.NullPointerException
E/AndroidRuntime(553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
E/AndroidRuntime(553): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidRuntime(553): at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidRuntime(553): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidRuntime(553): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(553): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(553): at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime(553): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(553): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(553): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(553): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(553): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(553): Caused by: java.lang.NullPointerException
E/AndroidRuntime(553): at dlp.android.digichronicle.inter.FetchingData(inter.java:84)
E/AndroidRuntime(553): at dlp.android.digichronicle.inter.onCreate(inter.java:28)
E/AndroidRuntime(553): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(553): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime(553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E/AndroidRuntime(553): ... 11 more
I/dalvikvm(553): threadid=3: reacting to signal 3
I/dalvikvm(553): Wrote stack traces to '/data/anr/traces.txt'
I/dalvikvm(553): threadid=3: reacting to signal 3
I/dalvikvm(553): Wrote stack traces to '/data/anr/traces.txt'
I/dalvikvm(553): threadid=3: reacting to signal 3
I/dalvikvm(553): Wrote stack traces to '/data/anr/traces.txt'
You need to instantiate myDbHelper
in inter
Activity's onCreate()
(You did it in displ
Activity but not in inter
Activity):
DBHandandler myDbHelper = new DBHandandler(this);
since FetchingData()
@ line 28 calls myDbHelper.onCreateDataBase();
while it is still not instantiated.
这篇关于无法启动的活动ComponentInfo当新的活动被称为:NullPointerException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!