当我通过意图调用新活动并通过意图发送值时,我收到此错误 在这里,我给了班级调用nw类和他们的代码分别请检查日志猫我也得到强制关闭我使用Android版本4.0.3
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);
}
}
}
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);
}
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
}
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'
答案 0 :(得分:2)
您需要在myDbHelper
活动inter
中实例化onCreate()
(您在displ
活动中但未在inter
活动中执行此操作):
DBHandandler myDbHelper = new DBHandandler(this);
因为FetchingData()
@第28行调用了myDbHelper.onCreateDataBase();
,但它仍未实例化。