为什么我的应用程序崩溃了?

吉里达·卡尼克(Giridhar Karnik)

每当我包含updateUI()方法时,我的应用就会崩溃,但是当我排除它时,它不会崩溃,请向我解释原因?,并请向我解释使用ArrayList和ArrayAdapter更新ListView的更好方法,因为我对使用SimpleCursorAdapter感到困惑,请提前考虑...

我的主要活动

package org.example.tasklist;

 import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {

    HelperMethods localhelpermethods;
    HelperMethods.OpenHelper localopenhelper;
    SQLiteDatabase localdatabase;
    ArrayList<String> task_list;
    ListView listView1;
    EditText editText1;
    ArrayAdapter<String> aa;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Context activitycontext = getApplicationContext();

        localhelpermethods = new HelperMethods(activitycontext);

        task_list  = new ArrayList<String>();
        listView1 = (ListView)findViewById(R.id.listView1);
        editText1 = (EditText)findViewById(R.id.editText1);

        Button button1 = (Button)findViewById(R.id.button1);

        aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,task_list);
        listView1.setAdapter(aa);       
        updateUI();


        button1.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v) 
            {             
               String task;
               localhelpermethods.open_database();
               task = editText1.getText().toString();
               localhelpermethods.add_task(task);

               editText1.setText("");

               updateUI();

            }
         });//working fine, don't know whether the task is being stored in the database.
    }

    public void updateUI()
    {
        task_list = localhelpermethods.getAllTasks();
        aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,task_list);
        listView1 = (ListView)findViewById(R.id.listView1);
        listView1.setAdapter(aa);

        aa.notifyDataSetChanged();
    }




    @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;
    }

}

我的HelperMethods.java

package org.example.tasklist;

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.SQLiteOpenHelper;

public class HelperMethods
{

public static final String DATABASE_NAME = "TASK_DATABASE";
public final String DATABASE_TABLE = "TASKS";
public static final int DATABASE_VERSION = 1;


//Columns in the table.
public final String KEY_ID = "_id";
public final String KEY_TASK = "task";

private static String CREATE_DATABASE = "create table TASKS (_id integer primary key autoincrement," + "task text not null);";



    private final Context localcontext;
    private OpenHelper localopenhelper;
    private SQLiteDatabase localdatabase;

    public HelperMethods(Context ctx)
    {
        this.localcontext = ctx;
        localopenhelper = new OpenHelper(localcontext);
    }//correct.

    //correct
     public class OpenHelper extends SQLiteOpenHelper
     {
         Context openhelpercontext;
          public OpenHelper(Context context)
          {
            super(context,DATABASE_NAME,null,DATABASE_VERSION);
            this.openhelpercontext = context;
          }

          @Override
          public void onCreate(SQLiteDatabase database)
          {
              database.execSQL(CREATE_DATABASE);
          }

          @Override
          public void onUpgrade(SQLiteDatabase database, int oldversion, int newversion)
          {
             if(newversion > oldversion)
             {
                 database.execSQL("DROP TABLE IF EXISTS tasks" );
                 onCreate(database);
             }
          }//correct
       }

    public HelperMethods open_database() throws SQLException
    {
        localdatabase = localopenhelper.getWritableDatabase();
        return this;
    }//correct.

    public void close_database()
    {
        localopenhelper.close();
    }//correct.

    public long add_task(String task)
    {
        ContentValues cv = new ContentValues();
        cv.put(KEY_TASK, task);
        return localdatabase.insert("TASKS", null, cv);
    }//correct

    public ArrayList<String> getAllTasks()
    { 
        ArrayList<String> task_list = new ArrayList<String>();
        localopenhelper.getReadableDatabase();
        String[] columns = new String[] {KEY_TASK};
        Cursor cursor = localdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null, null);
        while(cursor.moveToNext())
        {
            task_list.add(cursor.getString(cursor.getColumnIndex(KEY_TASK)));
        }
        return task_list;
    }//correct but not verified.

    public void deleteAllTasks()
    {
        localdatabase.delete(DATABASE_TABLE, KEY_TASK, null);
    }

}

我的错误日志

05-03 11:12:29.490: E/AndroidRuntime(2714): FATAL EXCEPTION: main
05-03 11:12:29.490: E/AndroidRuntime(2714): Process: org.example.tasklist, PID: 2714
05-03 11:12:29.490: E/AndroidRuntime(2714): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.tasklist/org.example.tasklist.MainActivity}: java.lang.NullPointerException
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.os.Looper.loop(Looper.java:137)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread.main(ActivityThread.java:4998)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at java.lang.reflect.Method.invokeNative(Native Method)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at java.lang.reflect.Method.invoke(Method.java:515)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at dalvik.system.NativeStart.main(Native Method)
05-03 11:12:29.490: E/AndroidRuntime(2714): Caused by: java.lang.NullPointerException
05-03 11:12:29.490: E/AndroidRuntime(2714):     at org.example.tasklist.HelperMethods.getAllTasks(HelperMethods.java:88)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at org.example.tasklist.MainActivity.updateUI(MainActivity.java:68)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at org.example.tasklist.MainActivity.onCreate(MainActivity.java:45)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.Activity.performCreate(Activity.java:5243)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-03 11:12:29.490: E/AndroidRuntime(2714):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
05-03 11:12:29.490: E/AndroidRuntime(2714):     ... 11 more
湿眶客

从您的日志中...

05-03 11:12:29.490: E/AndroidRuntime(2714): Caused by: java.lang.NullPointerException
05-03 11:12:29.490: E/AndroidRuntime(2714):     at org.example.tasklist.HelperMethods.getAllTasks(HelperMethods.java:88)

您在NullPointerException课程的第88行得到了认可HelperMethods查看您的代码,最可能的一行是...

while(cursor.moveToNext())

...这表明您的查询返回nullCursor尝试Cursor致电之前先检查moveToNext()例子...

if (cursor != null)
    while (cursor.moveToNext())
    {
        task_list.add(cursor.getString(cursor.getColumnIndex(KEY_TASK)));
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的按钮使我的应用程序崩溃?

来自分类Dev

为什么[[UINavigationBar外观] setTranslucent:NO]使我的应用程序崩溃?

来自分类Dev

为什么authorizeview role =“ admin”使我的应用程序崩溃?

来自分类Dev

Android Intent使我的应用程序崩溃,为什么?

来自分类Dev

为什么我的QQuick应用程序在Ubuntu上崩溃?

来自分类Dev

为什么SendKeys.SendWait()使我的应用程序崩溃

来自分类Dev

为什么我的应用程序在更改布局时崩溃?

来自分类Dev

为什么我的应用程序在执行按钮时崩溃?

来自分类Dev

为什么当我尝试显示我的 ip usig Inet 时我的应用程序崩溃?

来自分类Dev

为什么我的线程退出时我的Android应用程序崩溃?

来自分类Dev

当我单击某个按钮时,为什么我的应用程序崩溃?

来自分类Dev

我的应用程序崩溃了,但我不知道为什么?

来自分类Dev

我的应用程序在启动时崩溃,我不确定为什么

来自分类Dev

什么是_convertNSDictionaryToDictionary <A,B,其中...>(NSDictionary?)-> [A:B],为什么它会使我的应用程序崩溃?

来自分类Dev

什么是_convertNSDictionaryToDictionary <A,B,其中...>(NSDictionary?)-> [A:B],为什么它会使我的应用程序崩溃?

来自分类Dev

为什么此特定图像导致我的应用程序因OutOfMemoryException崩溃?

来自分类Dev

为什么更改命名空间时我的应用程序崩溃?

来自分类Dev

为什么我的Android应用程序显示为空白然后崩溃?

来自分类Dev

为什么我的无CRT应用程序在启动时间歇性崩溃?

来自分类Dev

为什么dequeueReusableCellWithIdentifier导致我的整个应用程序崩溃/挂起?

来自分类Dev

为什么启动照片意图之后但在调用onActivityResult()之前我的应用程序崩溃?

来自分类Dev

为什么在多个GET请求后我的Web应用程序崩溃?

来自分类Dev

我需要释放相机的onPause()和onDestroy()以避免应用程序崩溃。为什么?

来自分类Dev

将DisplayHomeAsUpEnabled设置为true时,为什么我的应用程序崩溃?

来自分类Dev

为什么快速切换片段时我的应用程序崩溃?

来自分类Dev

为什么我的应用程序在首次打开时会在Google Play上崩溃?

来自分类Dev

为什么即使使用错误边界,我的React应用程序也会崩溃?

来自分类Dev

为什么小错误会使我的SproutCore应用程序崩溃?

来自分类Dev

为什么我的应用程序在ubuntu-touch上崩溃?

Related 相关文章

  1. 1

    为什么我的按钮使我的应用程序崩溃?

  2. 2

    为什么[[UINavigationBar外观] setTranslucent:NO]使我的应用程序崩溃?

  3. 3

    为什么authorizeview role =“ admin”使我的应用程序崩溃?

  4. 4

    Android Intent使我的应用程序崩溃,为什么?

  5. 5

    为什么我的QQuick应用程序在Ubuntu上崩溃?

  6. 6

    为什么SendKeys.SendWait()使我的应用程序崩溃

  7. 7

    为什么我的应用程序在更改布局时崩溃?

  8. 8

    为什么我的应用程序在执行按钮时崩溃?

  9. 9

    为什么当我尝试显示我的 ip usig Inet 时我的应用程序崩溃?

  10. 10

    为什么我的线程退出时我的Android应用程序崩溃?

  11. 11

    当我单击某个按钮时,为什么我的应用程序崩溃?

  12. 12

    我的应用程序崩溃了,但我不知道为什么?

  13. 13

    我的应用程序在启动时崩溃,我不确定为什么

  14. 14

    什么是_convertNSDictionaryToDictionary <A,B,其中...>(NSDictionary?)-> [A:B],为什么它会使我的应用程序崩溃?

  15. 15

    什么是_convertNSDictionaryToDictionary <A,B,其中...>(NSDictionary?)-> [A:B],为什么它会使我的应用程序崩溃?

  16. 16

    为什么此特定图像导致我的应用程序因OutOfMemoryException崩溃?

  17. 17

    为什么更改命名空间时我的应用程序崩溃?

  18. 18

    为什么我的Android应用程序显示为空白然后崩溃?

  19. 19

    为什么我的无CRT应用程序在启动时间歇性崩溃?

  20. 20

    为什么dequeueReusableCellWithIdentifier导致我的整个应用程序崩溃/挂起?

  21. 21

    为什么启动照片意图之后但在调用onActivityResult()之前我的应用程序崩溃?

  22. 22

    为什么在多个GET请求后我的Web应用程序崩溃?

  23. 23

    我需要释放相机的onPause()和onDestroy()以避免应用程序崩溃。为什么?

  24. 24

    将DisplayHomeAsUpEnabled设置为true时,为什么我的应用程序崩溃?

  25. 25

    为什么快速切换片段时我的应用程序崩溃?

  26. 26

    为什么我的应用程序在首次打开时会在Google Play上崩溃?

  27. 27

    为什么即使使用错误边界,我的React应用程序也会崩溃?

  28. 28

    为什么小错误会使我的SproutCore应用程序崩溃?

  29. 29

    为什么我的应用程序在ubuntu-touch上崩溃?

热门标签

归档