无法找到nullpointer请协助

时间:2013-05-04 20:08:02

标签: android nullpointerexception

这是我从它获得一个指向第65行的空指针的类。

 public class searchlist extends ListActivity 
  {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    new loadSomeStuff().execute();
}

public class loadSomeStuff extends AsyncTask<String, Integer, String[]>
{
  ProgressDialog dialog;

  protected void onPreExecute()
  {
     dialog = new ProgressDialog(searchlist.this); 
     dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
     dialog.setMax(100);
     dialog.show();
  }
    @Override
    protected String[] doInBackground(String... arg0) {
        // TODO Auto-generated method stub

        for(int i =0; i<20; i++)
        {
          publishProgress(5);
          try
          {
          Thread.sleep(80);
          } catch(InterruptedException e)
          {
              e.printStackTrace();
          }
        }
        dialog.dismiss();
        int loops = search_page.returnlooped();
        int[] teacup = search_page.returnNumArray();
        sqlStuff searching = new sqlStuff(searchlist.this);
        String[] IDSysNames = searching.getIDSysName();
        searching.close();

        String[] resultList = new String[loops];
        for(int i=0; i < loops; i++ )
        {
            if(IDSysNames[teacup[i]] != null)
            {

            resultList[i].equals(IDSysNames[teacup[i]]);    //Line 65 

            }
        }
         setListAdapter(new ArrayAdapter<String>(searchlist.this, android.R.layout.simple_list_item_1, resultList));
        return null;
    }

    protected void onProgressUpdate(Integer...progress)
    {
        dialog.incrementProgressBy(progress[0]);
    }
}

这是上面类使用的getIDSysname类。

 public String[] getIDSysName()
{
    String[] result = new String[0];

    try
    {
        String[] columns = new String[] {KEY_SYSNAME};
        Cursor c  =  ChemPal.query(DATABASE_TABLE, columns, null, null, null, null, null);
        Log.d("SqlDStuff", "Cursor count: "+c.getCount());
        int iSysName = c.getColumnIndex(KEY_SYSNAME);

        int i = 0;
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            i++;
        }

        result = new String[i];
        i = 0;
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            result[i] = c.getString(iSysName);
            i++;

        }
    }
    catch(Exception e)
    {   

    }

    return result;
}

如果还需要其他任何内容,请在评论中提问,因为此刻令我感到沮丧。谢谢

3 个答案:

答案 0 :(得分:0)

您已经分配了一个字符串数组:

String[] resultList = new String[loops];
for (int i=0; i < loops; i++ ) {
    if (IDSysNames[teacup[i]] != null) {
        resultList[i].equals(IDSysNames[teacup[i]]);    //Line 65 

其中没有任何字符串可以调用equals

答案 1 :(得分:0)

   dialog.dismiss();

你不能在doInBackground()上致电解雇。必须在UI线程上调用与UI线程相关的每个方法。

尝试:

runOnUiThread(new Runnable() {

    public void run() {
        dialog.dismiss();
    }
});

答案 2 :(得分:0)

setListAdapter(new ArrayAdapter(searchlist.this,android.R.layout.simple_list_item_1,resultList));

我不得不将此方法移动到onCreate();我不得不通过一个名为onPostExecute的方法重新生成resultList值。

原来日志猫正在组成空指针,不知道为什么。谢谢你们,但我现在明白了。