错误/AndroidRuntime(335):导致:java.lang.NullPointerException
嗨,我是 Android 新手。 在执行我的应用程序时,我收到空点异常错误,不知道为什么会发生。请任何人帮助我摆脱这个问题。提前致谢。
这是我的 logcat:
09-14 12:30:14.027: INFO/System.out(365): Constructor StudentList Adapter...
09-14 12:30:14.027: DEBUG/AndroidRuntime(365): Shutting down VM
09-14 12:30:14.027: WARN/dalvikvm(365): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): FATAL EXCEPTION: main
09-14 12:30:14.047: ERROR/AndroidRuntime(365): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.UserLogin/com.UserLogin.FindPlaces}: java.lang.NullPointerException
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost.setCurrentTab(TabHost.java:323)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.view.View.performClick(View.java:2408)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.view.View$PerformClick.run(View.java:8816)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Handler.handleCallback(Handler.java:587)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Handler.dispatchMessage(Handler.java:92)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Looper.loop(Looper.java:123)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at java.lang.reflect.Method.invokeNative(Native Method)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at java.lang.reflect.Method.invoke(Method.java:521)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at dalvik.system.NativeStart.main(Native Method)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): Caused by: java.lang.NullPointerException
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.UserLogin.FindPlaces.displayLocs(FindPlaces.java:35)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.UserLogin.FindPlaces.onCreate(FindPlaces.java:30)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): ... 18 more
09-14 12:30:14.057: WARN/ActivityManager(58): Force finishing activity com.UserLogin/.Innerpage
09-14 12:30:14.594: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{4506eef0 com.UserLogin/.Innerpage}
09-14 12:30:16.347: INFO/Process(365): Sending signal. PID: 365 SIG: 9
09-14 12:30:16.367: INFO/ActivityManager(58): Process com.UserLogin (pid 365) has died.
09-14 12:30:16.367: INFO/WindowManager(58): WIN DEATH: Window{4506a6e0 com.UserLogin/com.UserLogin.Innerpage paused=false}
09-14 12:30:16.367: INFO/WindowManager(58): WIN DEATH: Window{451492d0 com.UserLogin/com.UserLogin.UserLogin paused=false}
09-14 12:30:16.397: INFO/UsageStats(58): Unexpected resume of com.android.launcher while already resumed in com.UserLogin
Java 文件:
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class FindPlaces extends ListActivity{
private SQLiteDatabase DbLoc;
ListView lv;
private ArrayList<Fields> results = new ArrayList<Fields>();
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
//setContentView(R.layout.places);
getallLocs();
displayLocs();
}
private void displayLocs() {
lv = (ListView)findViewById(R.id.listPlaces);
lv.setAdapter(new StudentListAdapter(this, R.layout.placeslist, results));
//lv.setAdapter(new ArrayAdapter<Fields>(this,android.R.layout.simple_list_item_1, results));
}
class StudentListAdapter extends ArrayAdapter<Fields>{
private ArrayList<Fields> locationDetails;
private Context mContext;
public StudentListAdapter(Context context,int textViewResourceId, ArrayList<Fields> results) {
super(context, textViewResourceId, results);
// TODO Auto-generated constructor stub
System.out.println("Constructor StudentList Adapter...");
this.locationDetails = results;
mContext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return results.size();
}
@Override
public Fields getItem(int position) {
// TODO Auto-generated method stub
return locationDetails.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if(v == null){
LayoutInflater vl = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vl.inflate(R.layout.placeslist, null);
}
Fields o = results.get(position);
if (o != null) {
TextView iv = (TextView)v.findViewById(R.id.toptext);
TextView tv_sNo = (TextView)v.findViewById(R.id.toptext1);
iv.setText(o.getLocationName());
tv_sNo.setText(o.getLocationImage());
}
DbLoc.close();
return v;
}
}
static class ViewHolder
{
TextView Locationname;
ImageView Locationimage;
}
private void getallLocs() {
// TODO Auto-generated method stub
try {
DatabaseHelper dbHelper = new DatabaseHelper(
this.getApplicationContext());
DbLoc = dbHelper.getWritableDatabase();
Cursor c = DbLoc.rawQuery("SELECT " + DatabaseHelper.LocationName+ " , " + DatabaseHelper.LocationImage + " FROM "
+ DatabaseHelper.LOCATIONTABLE , null);
if (c != null) {
if (c.moveToFirst()) {
do {
String LocationName= c.getString(c.getColumnIndex("LocationName"));
String Mobile = c.getString(c
.getColumnIndex("LocationImage"));
Fields p = new Fields(LocationName, Mobile);
results.add(p);
} while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(),
"Could not create or Open the database");
}
finally { if (DbLoc != null) DbLoc.execSQL("DELETE FROM " +
DatabaseHelper.FRIENDTABLE); DbLoc.execSQL("DELETE FROM " +
DatabaseHelper.LOCATIONTABLE);
DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.FRIENDTABLE);
DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.LOCATIONTABLE);
DbLoc.close();
}
}
}
Places.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:padding="6dip">
<ListView android:id="@+id/listPlaces" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Placeslist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/toptext" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1"
android:gravity="center_vertical" />
<TextView android:id="@+id/toptext1" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1"
android:gravity="center_vertical" />
</LinearLayout>
Hi i'm new bee to android.
while executing my application I'm getting nullpoint exception error, dont know why it is happening. please any one help me to get rid from this issue. thanks in advance.
This is my logcat:
09-14 12:30:14.027: INFO/System.out(365): Constructor StudentList Adapter...
09-14 12:30:14.027: DEBUG/AndroidRuntime(365): Shutting down VM
09-14 12:30:14.027: WARN/dalvikvm(365): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): FATAL EXCEPTION: main
09-14 12:30:14.047: ERROR/AndroidRuntime(365): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.UserLogin/com.UserLogin.FindPlaces}: java.lang.NullPointerException
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost.setCurrentTab(TabHost.java:323)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.view.View.performClick(View.java:2408)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.view.View$PerformClick.run(View.java:8816)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Handler.handleCallback(Handler.java:587)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Handler.dispatchMessage(Handler.java:92)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.os.Looper.loop(Looper.java:123)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at java.lang.reflect.Method.invokeNative(Native Method)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at java.lang.reflect.Method.invoke(Method.java:521)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at dalvik.system.NativeStart.main(Native Method)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): Caused by: java.lang.NullPointerException
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.UserLogin.FindPlaces.displayLocs(FindPlaces.java:35)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at com.UserLogin.FindPlaces.onCreate(FindPlaces.java:30)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-14 12:30:14.047: ERROR/AndroidRuntime(365): ... 18 more
09-14 12:30:14.057: WARN/ActivityManager(58): Force finishing activity com.UserLogin/.Innerpage
09-14 12:30:14.594: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{4506eef0 com.UserLogin/.Innerpage}
09-14 12:30:16.347: INFO/Process(365): Sending signal. PID: 365 SIG: 9
09-14 12:30:16.367: INFO/ActivityManager(58): Process com.UserLogin (pid 365) has died.
09-14 12:30:16.367: INFO/WindowManager(58): WIN DEATH: Window{4506a6e0 com.UserLogin/com.UserLogin.Innerpage paused=false}
09-14 12:30:16.367: INFO/WindowManager(58): WIN DEATH: Window{451492d0 com.UserLogin/com.UserLogin.UserLogin paused=false}
09-14 12:30:16.397: INFO/UsageStats(58): Unexpected resume of com.android.launcher while already resumed in com.UserLogin
Java file:
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class FindPlaces extends ListActivity{
private SQLiteDatabase DbLoc;
ListView lv;
private ArrayList<Fields> results = new ArrayList<Fields>();
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
//setContentView(R.layout.places);
getallLocs();
displayLocs();
}
private void displayLocs() {
lv = (ListView)findViewById(R.id.listPlaces);
lv.setAdapter(new StudentListAdapter(this, R.layout.placeslist, results));
//lv.setAdapter(new ArrayAdapter<Fields>(this,android.R.layout.simple_list_item_1, results));
}
class StudentListAdapter extends ArrayAdapter<Fields>{
private ArrayList<Fields> locationDetails;
private Context mContext;
public StudentListAdapter(Context context,int textViewResourceId, ArrayList<Fields> results) {
super(context, textViewResourceId, results);
// TODO Auto-generated constructor stub
System.out.println("Constructor StudentList Adapter...");
this.locationDetails = results;
mContext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return results.size();
}
@Override
public Fields getItem(int position) {
// TODO Auto-generated method stub
return locationDetails.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if(v == null){
LayoutInflater vl = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vl.inflate(R.layout.placeslist, null);
}
Fields o = results.get(position);
if (o != null) {
TextView iv = (TextView)v.findViewById(R.id.toptext);
TextView tv_sNo = (TextView)v.findViewById(R.id.toptext1);
iv.setText(o.getLocationName());
tv_sNo.setText(o.getLocationImage());
}
DbLoc.close();
return v;
}
}
static class ViewHolder
{
TextView Locationname;
ImageView Locationimage;
}
private void getallLocs() {
// TODO Auto-generated method stub
try {
DatabaseHelper dbHelper = new DatabaseHelper(
this.getApplicationContext());
DbLoc = dbHelper.getWritableDatabase();
Cursor c = DbLoc.rawQuery("SELECT " + DatabaseHelper.LocationName+ " , " + DatabaseHelper.LocationImage + " FROM "
+ DatabaseHelper.LOCATIONTABLE , null);
if (c != null) {
if (c.moveToFirst()) {
do {
String LocationName= c.getString(c.getColumnIndex("LocationName"));
String Mobile = c.getString(c
.getColumnIndex("LocationImage"));
Fields p = new Fields(LocationName, Mobile);
results.add(p);
} while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(),
"Could not create or Open the database");
}
finally { if (DbLoc != null) DbLoc.execSQL("DELETE FROM " +
DatabaseHelper.FRIENDTABLE); DbLoc.execSQL("DELETE FROM " +
DatabaseHelper.LOCATIONTABLE);
DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.FRIENDTABLE);
DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.LOCATIONTABLE);
DbLoc.close();
}
}
}
Places.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:padding="6dip">
<ListView android:id="@+id/listPlaces" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Placeslist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/toptext" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1"
android:gravity="center_vertical" />
<TextView android:id="@+id/toptext1" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1"
android:gravity="center_vertical" />
</LinearLayout>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
取消注释此行
已编辑:
将其替换为您的文件(Places.xml)
已更新
uncomment this line
EDITED:
replace this with your file(Places.xml)
UPDATED
如果您尚未为 Activity 设置内容视图,则无法使用
findViewById()
。所以你的lv
将为空。您正在使用
ListActivity
。如果你想添加自己的样式,布局中的ListView
需要 idandroid:list
:如图所示android.com/reference/android/app/ListActivity.html" rel="nofollow">此处。
如果您使用
ListActivity
,则不使用findViewById()
来获取ListView,您可以使用getListView()
-方法。You can't use
findViewById()
if you haven't set a content-view for the activity. So yourlv
will be null.You're using a
ListActivity
. If you want to add your own style to it, theListView
in your layout needs the idandroid:list
:As illustrated here.
If you use a
ListActivity
, you don't usefindViewById()
to get the ListView, you can use thegetListView()
-method.