在Sqlite中NUll指向异常

时间:2014-09-28 08:21:20

标签: android sqlite

这是我的MainActivity。

public class MainActivity extends ActionBarActivity {

    public Button ok;
    public EditText name, password;
    public ListView listView;
    BaseAdapter baseAdapter;
    ArrayList<item> arrayList;
    View view;
    DataBaseHelper dBaseHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
        setContentView(R.layout.activity_main);
        InitializedAll();

        ok.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                save(view);
                show(view);
            }
        });
    }

    private void InitializedAll() {
        name = (EditText) findViewById(R.id.nameeditText);
        password = (EditText) findViewById(R.id.passwordeditText);
        ok = (Button) findViewById(R.id.okbutton);
        listView = (ListView) findViewById(R.id.listView);
        arrayList = new ArrayList<item>();
        baseAdapter = new BaseAdapter() {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            @Override
            public View getView(int position, View view, ViewGroup arg2) {
                if (view == null) {
                    view = inflater.inflate(R.layout.item_list, null);

                }

                TextView name = (TextView) view.findViewById(R.id.nametextView);
                TextView pass = (TextView) view
                        .findViewById(R.id.passwordtextView);
                name.setText(arrayList.get(position).getName());
                pass.setText(arrayList.get(position).getPassword());
                return view;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return arrayList.get(position);
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return arrayList.size();
            }
        };
        listView.setAdapter(baseAdapter);

    }

    public void save(View view) {

        String na = name.getText().toString();
        String pas = password.getText().toString();

        item listItem = new item(na, pas);
        arrayList.add(listItem);
        long inserted = dBaseHelper.insertItem(listItem);
        if (inserted >= 0) {
            Toast.makeText(getApplicationContext(), "Data Inserted",
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "Data not Inserted",
                    Toast.LENGTH_SHORT).show();
        }

        baseAdapter.notifyDataSetChanged();
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager
                .hideSoftInputFromWindow(password.getWindowToken(), 0);
        Toast.makeText(getBaseContext(), "New Wish Added To List",
                Toast.LENGTH_SHORT).show();
        show(view);
    }

    public void show(View view) {
        ArrayList<item> items = dBaseHelper.getAllDate();
        if (items != null && items.size() > 0) {
            baseAdapter.notifyDataSetChanged();

        }
    }

}

这是我的Logcat错误。

09-28 14:16:42.460: E/AndroidRuntime(15748): FATAL EXCEPTION: main

09-28 14:16:42.460: E/AndroidRuntime(15748): java.lang.NullPointerException

09-28 14:16:42.460: E/AndroidRuntime(15748):    at com.example.text.MainActivity.show(MainActivity.java:131)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at com.example.text.MainActivity.save(MainActivity.java:127)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at com.example.text.MainActivity$1.onClick(MainActivity.java:44)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.view.View.performClick(View.java:4102)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.view.View$PerformClick.run(View.java:17085)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.os.Handler.handleCallback(Handler.java:615)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.os.Handler.dispatchMessage(Handler.java:92)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.os.Looper.loop(Looper.java:155)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at android.app.ActivityThread.main(ActivityThread.java:5511)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at java.lang.reflect.Method.invokeNative(Native Method)
09-28 14:16:42.460: E/AndroidRuntime(15748):    at java.lang.reflect.Method.invoke(Method.java:511)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)

09-28 14:16:42.460: E/AndroidRuntime(15748):    at dalvik.system.NativeStart.main(Native Method)

09-28 14:16:42.470: E/EmbeddedLogger(426): App crashed! Process: com.example.text

09-28 14:16:42.470: E/EmbeddedLogger(426): App crashed! Package: com.example.text v1 (1.0)

09-28 14:16:42.470: E/EmbeddedLogger(426): Application Label: Text

09-28 14:16:44.822: E/HtcModeClient(15009): Check connection and retry 12 times.

我想显示我的数据在我的listView中,但是当我运行这个应用程序时,它被迫停止。 然后我看到我的logcat错误,但我找不到nullpointexception。 如何解决它。

3 个答案:

答案 0 :(得分:0)

dBaseHelper对象为null,因为在从getAllDate()类调用DataBaseHelper方法之前,您没有初始化它。在onCreate of Acivity中初始化它。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     // Initialize dBaseHelper here

       //...your code
}

答案 1 :(得分:0)

您正在声明变量dBaseHelper;

DataBaseHelper dBaseHelper;

...但你永远不会把它设置成任何东西。当你到达那条线时;

ArrayList<item> items = dBaseHelper.getAllDate();

... dBaseHelper为null并导致程序崩溃。

答案 2 :(得分:0)

您必须初始化DataBaseHelper类。所以把这个,myDbHelper = new DataBaseHelper(this);在onCreate方法中,就像这样。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
setContentView(R.layout.activity_main);

 myDbHelper = new DataBaseHelper(this);

InitializedAll(); .....}