【发布时间】:2013-12-29 11:00:36
【问题描述】:
这是我的代码当从 gridView 中单击时,我试图在单独的活动中显示来自 SQLite 数据库的列表视图。它没有按预期工作我找不到错误,我对此很陌生,应用程序强制关闭。错误是这样的
12-29 20:36:37.954: D/dalvikvm(1948): Late-enabling CheckJNI
12-29 20:36:38.266: D/dalvikvm(1948): Debugger has detached; object registry had 1 entries
12-29 20:36:38.360: D/AbsListView(1948): Get MotionRecognitionManager
12-29 20:36:38.461: D/libEGL(1948): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
12-29 20:36:38.493: D/libEGL(1948): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
12-29 20:36:38.501: D/libEGL(1948): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
12-29 20:36:38.680: D/OpenGLRenderer(1948): Enabling debug mode 0
12-29 20:36:38.751: D/dalvikvm(1948): GC_CONCURRENT freed 121K, 9% free 7679K/8391K, paused 17ms+2ms, total 51ms
12-29 20:36:38.751: D/dalvikvm(1948): WAIT_FOR_CONCURRENT_GC blocked 23ms
12-29 20:36:38.868: D/dalvikvm(1948): GC_CONCURRENT freed 11K, 8% free 8119K/8775K, paused 12ms+3ms, total 43ms
12-29 20:36:39.024: D/dalvikvm(1948): GC_CONCURRENT freed 8K, 7% free 8603K/9223K, paused 12ms+12ms, total 63ms
12-29 20:36:39.079: I/Choreographer(1948): Skipped 41 frames! The application may be doing too much work on its main thread.
12-29 20:36:54.188: D/AbsListView(1948): Get MotionRecognitionManager
12-29 20:36:54.297: D/AndroidRuntime(1948): Shutting down VM
12-29 20:36:54.297: W/dalvikvm(1948): threadid=1: thread exiting with uncaught exception (group=0x415662a0)
12-29 20:36:54.329: E/AndroidRuntime(1948): FATAL EXCEPTION: main
12-29 20:36:54.329: E/AndroidRuntime(1948): java.lang.NullPointerException
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.AbsListView.obtainView(AbsListView.java:2467)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.ListView.makeAndAddView(ListView.java:1769)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.ListView.fillDown(ListView.java:672)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.ListView.fillFromTop(ListView.java:733)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.ListView.layoutChildren(ListView.java:1622)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.AbsListView.onLayout(AbsListView.java:2300)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.View.layout(View.java:14061)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewGroup.layout(ViewGroup.java:4376)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.View.layout(View.java:14061)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewGroup.layout(ViewGroup.java:4376)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.View.layout(View.java:14061)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewGroup.layout(ViewGroup.java:4376)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.View.layout(View.java:14061)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewGroup.layout(ViewGroup.java:4376)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.View.layout(View.java:14061)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewGroup.layout(ViewGroup.java:4376)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1986)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1807)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4464)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.Choreographer.doFrame(Choreographer.java:525)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.os.Handler.handleCallback(Handler.java:615)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.os.Handler.dispatchMessage(Handler.java:92)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.os.Looper.loop(Looper.java:137)
12-29 20:36:54.329: E/AndroidRuntime(1948): at android.app.ActivityThread.main(ActivityThread.java:4895)
12-29 20:36:54.329: E/AndroidRuntime(1948): at java.lang.reflect.Method.invokeNative(Native Method)
12-29 20:36:54.329: E/AndroidRuntime(1948): at java.lang.reflect.Method.invoke(Method.java:511)
12-29 20:36:54.329: E/AndroidRuntime(1948): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
12-29 20:36:54.329: E/AndroidRuntime(1948): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
12-29 20:36:54.329: E/AndroidRuntime(1948): at dalvik.system.NativeStart.main(Native Method)
这是我生成错误的代码
JokeList.java
package com.try;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.try.Utils.DataBaseHelper;
import com.try.Utils.SingleRow;
public class JokeList extends Activity
{
int catId;
String catName;
/** Called when the activity is first created. */
Button jokesCatButton;
Button jokeFavButton;
Button readButton;
Button unReadButton;
Button allButton;
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_javalist);
jokesCatButton = (Button) findViewById(R.id.jokeCatNameButton);
jokeFavButton = (Button) findViewById(R.id.jokeFavButton);
readButton = (Button) findViewById(R.id.readButton);
unReadButton = (Button) findViewById(R.id.unReadButton);
allButton = (Button) findViewById(R.id.allButton);
Bundle localBundle = getIntent().getExtras();
this.catId = localBundle.getInt("catId");
this.catName = localBundle.getString("catName");
listView = (ListView) findViewById(R.id.ListView01);
jokesCatButton.setText(catName + " " + catId);
jokesCatButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), " You clicked Joke Cat button", Toast.LENGTH_SHORT).show();
// Intent intent = new
// Intent(v.getContext(),JokeList.class);
// startActivityForResult(intent, 0);
}
});
jokeFavButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), " You Joke Fav DB button", Toast.LENGTH_SHORT).show();
// Intent intent = new
// Intent(v.getContext(),JokeList.class);
// startActivityForResult(intent, 0);
}
});
readButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), " You Read DB button", Toast.LENGTH_SHORT).show();
// Intent intent = new
// Intent(v.getContext(),JokeList.class);
// startActivityForResult(intent, 0);
}
});
unReadButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), " You unRead DB button", Toast.LENGTH_SHORT).show();
// Intent intent = new
// Intent(v.getContext(),JokeList.class);
// startActivityForResult(intent, 0);
}
});
allButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), " You allButton DB button", Toast.LENGTH_SHORT).show();
// Intent intent = new
// Intent(v.getContext(),JokeList.class);
// startActivityForResult(intent, 0);
}
});
listView.setAdapter(new RowView(this));
}
}
class RowView extends BaseAdapter
{
ArrayList<SingleRow> list;
DataBaseHelper myDbHelper;
JokeList jl;
int Position;
Context context;
RowView(Context c)
{
myDbHelper=new DataBaseHelper(c);
jl=new JokeList();
this.context=c;
this.Position=jl.catId;
list=myDbHelper.getCursor(Position);
}
@Override
public int getCount()
{
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int i)
{
// TODO Auto-generated method stub
return list.get(i);
}
@Override
public long getItemId(int i)
{
// TODO Auto-generated method stub
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
SingleRow sr;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.singlelist_cell, viewGroup, false);
TextView title = (TextView) row.findViewById(R.id.TextView01);
TextView description = (TextView) row.findViewById(R.id.TextView02);
SingleRow temp = list.get(i);
title.setText(temp.title);
description.setText(temp.description);
// TODO Auto-generated method stub
return null;
}
}
还请提出一些有效的方法来实施本准则。
【问题讨论】:
标签: android sqlite listview gridview nullpointerexception