Java 当I';时,致命异常显示错误无法启动活动组件;我正在运行这个应用程序
我试图在列表视图应用程序中简单地显示SQLite数据库中的所有记录。编译器没有检测到任何错误,但当我运行应用程序时,它会收到一个运行时错误 main_Activity.javaJava 当I';时,致命异常显示错误无法启动活动组件;我正在运行这个应用程序,java,android,sqlite,Java,Android,Sqlite,我试图在列表视图应用程序中简单地显示SQLite数据库中的所有记录。编译器没有检测到任何错误,但当我运行应用程序时,它会收到一个运行时错误 main_Activity.java package com.example.login_userauthentication; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; im
package com.example.login_userauthentication;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void Register(View v)
{
startActivity(new Intent(getApplicationContext(),Reg.class));
}
public void Login(View v)
{
startActivity(new Intent(getApplicationContext(),Login.class));
}
public void Show_allrecord(View v)
{
startActivity(new Intent(getApplicationContext(),Show_record.class));
}
public void update_record(View v)
{
startActivity(new Intent(getApplicationContext(),Update.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Show_Record.java(这是在listview中显示所有用户详细信息的主类)
这是logcat
12-24 05:15:26.447: I/Choreographer(1009): Skipped 64 frames! The application may be doing too much work on its main thread.
12-24 05:15:27.797: I/Choreographer(1009): Skipped 48 frames! The application may be doing too much work on its main thread.
12-24 05:15:43.807: I/System.out(1009): show sumit
12-24 05:15:44.547: D/dalvikvm(1009): GC_FOR_ALLOC freed 88K, 9% free 2642K/2876K, paused 245ms, total 305ms
12-24 05:15:44.818: I/System.out(1009): show_record activity
12-24 05:15:44.837: I/System.out(1009): show sumit
12-24 05:15:44.857: I/jobplacement(1009): DBHelper class constructer called
12-24 05:15:44.857: I/jobplacement(1009): Database Created Successfully
12-24 05:15:44.887: D/AndroidRuntime(1009): Shutting down VM
12-24 05:15:44.887: W/dalvikvm(1009): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
12-24 05:15:45.017: E/AndroidRuntime(1009): FATAL EXCEPTION: main
12-24 05:15:45.017: E/AndroidRuntime(1009): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.login_userauthentication/com.example.login_userauthentication.Show_record}: java.lang.NullPointerException
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.os.Looper.loop(Looper.java:137)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-24 05:15:45.017: E/AndroidRuntime(1009): at java.lang.reflect.Method.invokeNative(Native Method)
12-24 05:15:45.017: E/AndroidRuntime(1009): at java.lang.reflect.Method.invoke(Method.java:511)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-24 05:15:45.017: E/AndroidRuntime(1009): at dalvik.system.NativeStart.main(Native Method)
12-24 05:15:45.017: E/AndroidRuntime(1009): Caused by: java.lang.NullPointerException
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.example.login_userauthentication.Database.getAllrecord(Database.java:144)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.example.login_userauthentication.Show_record.onCreate(Show_record.java:32)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.Activity.performCreate(Activity.java:5104)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-24 05:15:45.017: E/AndroidRuntime(1009): ... 11 more
12-24 05:40:30.726: D/gralloc_goldfish(1215): Emulator without GPU emulation detected.
12-24 05:43:35.957: D/gralloc_goldfish(1271): Emulator without GPU emulation detected.
传递的数据库类getAllrecord()context1内部为null
dbhelper = new Databse_helper(context1);//here context1 is null
您可以尝试在数据库类中将上下文传递到getAllrecord(context-context1)
然后我可以打电话
studentlist=helper.getAllrecord(Show_record.this)代码>
从Show_唱片班。希望这将有助于解决您的问题。您的日志猫在哪里?
?我已经编辑了日志,您在通过上下文后仍然面临问题吗?请用更新的代码更新您的logcat stacktrace。先生,没有任何事情发生。我是我最好的,但什么都没有。请在您对context1进行更改后粘贴您的更新代码。
package com.example.login_userauthentication;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.provider.SyncStateContract.Helpers;
import android.util.Log;
public class Database
{
public static final String TABLE_NAME = "student";
public static final String USER_EMAILID= "emailid";
public static final String USER_PASSWORD = "password";
public static final String USER_NAME = "name";
public static final String USER_CONTACT = "mobileno";
public static final String Tag = "jobplacement";
public static Databse_helper dbhelper = null;
public static SQLiteDatabase db = null;
static Context context1 = null;
public static boolean addUser(Context context, String email, String password, String name,String mobile)
{
context1=context;
try {
dbhelper=new Databse_helper(context);
db=dbhelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(Database.USER_EMAILID,email);
values.put(Database.USER_PASSWORD,password);
values.put(Database.USER_NAME,name);
values.put(Database.USER_CONTACT,mobile);
long rowid = db.insert(Database.TABLE_NAME, null, values);
Log.d("Users", "Inserted into TRANSACTIONS " + rowid);
db.close();
return true;
} catch (Exception e) {
// TODO: handle exception
}
return false;
}
public static boolean userAuthentication(Context context, String uname, String password) {
Cursor trans = null;
try {
dbhelper=new Databse_helper(context);
db = dbhelper.getWritableDatabase();
trans = db.rawQuery("select " + USER_PASSWORD + " from " + TABLE_NAME + " where " + USER_EMAILID
+ " = '" + uname + "'", null);
if (trans.getCount() == 0)
{
Log.d("userAuthentication", "Zero record");
}
else
{
while (trans.moveToNext())
{
String pass = trans.getString(trans.getColumnIndex(USER_PASSWORD));
if (password.equals(pass))
{
return true;
} else {
return false;
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
return false;
}
public ArrayList<Student> getAllProducts()
{
db = dbhelper.getWritableDatabase();
List<Student> productList = new ArrayList<Student>();
// Select All Query
String selectQuery = "SELECT * FROM " + Database.TABLE_NAME;
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Student st = new Student();
st.setEmailid(cursor.getString(0));
st.setPassword(cursor.getString(1));
st.setName(cursor.getString(2));
st.setMobileno(cursor.getString(3));
// product.setID(Integer.parseInt(cursor.getString(0)));
// product.setName(cursor.getString(1));
// product.setNumber(Integer.parseInt(cursor.getString(2)));
// product.setPieces(Integer.parseInt(cursor.getString(3)));
// product.setPrice(Integer.parseInt(cursor.getString(4)));
// product.setTotPrice(Integer.parseInt(cursor.getString(5)));
// Adding contact to list
productList.add(st);
} while (cursor.moveToNext());
}
// return contact list
return (ArrayList<Student>) productList;
}
public static boolean updateEntry(Student st)
{
db=dbhelper.getWritableDatabase();
// Define the updated row content.
ContentValues updatedValues = new ContentValues();
// Assign values for each row.
updatedValues.put(USER_EMAILID, st.getEmailid());
updatedValues.put(USER_NAME,st.getName());
updatedValues.put(USER_CONTACT, st.getMobileno());
//String where=Database.USER_EMAILID +"=+?";
// String where="emailid +=?";
int row_id=db.update(Database.TABLE_NAME,updatedValues, "emailid=?", new String[]{st.getEmailid()});
Log.d("login", "updated record " +row_id);
return true;
}
public ArrayList<Student> getAllrecord()
{
dbhelper=new Databse_helper(context1);
db=dbhelper.getWritableDatabase();
List<Student> emplist=new ArrayList<Student>();
String rowquery="select * from "+TABLE_NAME;
Cursor cursor=db.rawQuery(rowquery, null);
if (cursor.moveToFirst())
{
do
{ Student st = new Student();
st.setEmailid(cursor.getString(0));
st.setPassword(cursor.getString(1));
st.setName(cursor.getString(2));
st.setMobileno(cursor.getString(3));
// Adding Translate to list
Student emp1=new Student();
emplist.add(st);
}
while (cursor.moveToNext());
}
// return Translate list
return (ArrayList<Student>) emplist;
}
}
package com.example.login_userauthentication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class Databse_helper extends SQLiteOpenHelper
{
static final int DATABASE_VERSION = 2;
static final String DATABASE_NAME = "collage.db";
public static final String Tag = "jobplacement";
public Databse_helper(Context cxt)
{
super(cxt, DATABASE_NAME, null, DATABASE_VERSION);
Log.i(Tag, "DBHelper class constructer called");
Log.i(Tag, "Database Created Successfully");
}
public void onCreate(SQLiteDatabase db)
{
createTables(db);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + Database.TABLE_NAME);
// Create tables again
onCreate(db);
}
private void createTables(SQLiteDatabase database)
{
String users_table_sql = "create table " + Database.TABLE_NAME + " ( " + Database.USER_EMAILID
+ " TEXT," + Database.USER_PASSWORD + " TEXT," + Database.USER_NAME
+ " TEXT," + Database.USER_CONTACT + " TEXT)";
try {
database.execSQL(users_table_sql);
Log.d(Tag, "table created successfully");
// protected static final String player = ("CREATE TABLE " + table_player
// + " (" + player_id + " INTEGER PRIMARY KEY AUTOINCREMENT, "
// + player_name + " TEXT, " + player_dob + " INTEGER," + player_gender + " TEXT);");
//
//
// "CREATE TABLE " + TABLE_PRODUCTS + "("
// + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
// + KEY_NO + " TEXT," + KEY_PIECES + " TEXT,"+ KEY_PRICE + " TEXT," + KEY_TOT_PRICE + " TEXT" + ")";
} catch (Exception ex)
{
Log.d("Accounts", "Error in DBHelper.onCreate() : " + ex.getMessage());
}
}
}
12-24 05:15:26.447: I/Choreographer(1009): Skipped 64 frames! The application may be doing too much work on its main thread.
12-24 05:15:27.797: I/Choreographer(1009): Skipped 48 frames! The application may be doing too much work on its main thread.
12-24 05:15:43.807: I/System.out(1009): show sumit
12-24 05:15:44.547: D/dalvikvm(1009): GC_FOR_ALLOC freed 88K, 9% free 2642K/2876K, paused 245ms, total 305ms
12-24 05:15:44.818: I/System.out(1009): show_record activity
12-24 05:15:44.837: I/System.out(1009): show sumit
12-24 05:15:44.857: I/jobplacement(1009): DBHelper class constructer called
12-24 05:15:44.857: I/jobplacement(1009): Database Created Successfully
12-24 05:15:44.887: D/AndroidRuntime(1009): Shutting down VM
12-24 05:15:44.887: W/dalvikvm(1009): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
12-24 05:15:45.017: E/AndroidRuntime(1009): FATAL EXCEPTION: main
12-24 05:15:45.017: E/AndroidRuntime(1009): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.login_userauthentication/com.example.login_userauthentication.Show_record}: java.lang.NullPointerException
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.os.Looper.loop(Looper.java:137)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-24 05:15:45.017: E/AndroidRuntime(1009): at java.lang.reflect.Method.invokeNative(Native Method)
12-24 05:15:45.017: E/AndroidRuntime(1009): at java.lang.reflect.Method.invoke(Method.java:511)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-24 05:15:45.017: E/AndroidRuntime(1009): at dalvik.system.NativeStart.main(Native Method)
12-24 05:15:45.017: E/AndroidRuntime(1009): Caused by: java.lang.NullPointerException
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.example.login_userauthentication.Database.getAllrecord(Database.java:144)
12-24 05:15:45.017: E/AndroidRuntime(1009): at com.example.login_userauthentication.Show_record.onCreate(Show_record.java:32)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.Activity.performCreate(Activity.java:5104)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-24 05:15:45.017: E/AndroidRuntime(1009): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-24 05:15:45.017: E/AndroidRuntime(1009): ... 11 more
12-24 05:40:30.726: D/gralloc_goldfish(1215): Emulator without GPU emulation detected.
12-24 05:43:35.957: D/gralloc_goldfish(1271): Emulator without GPU emulation detected.
dbhelper = new Databse_helper(context1);//here context1 is null