首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到空指针,请协助

找不到空指针,请协助
EN

Stack Overflow用户
提问于 2013-05-05 04:08:02
回答 3查看 36关注 0票数 0

这是我得到的类,从它指向第65行的指针为空。

代码语言:javascript
复制
 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类。

代码语言:javascript
复制
 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;
}

如果还需要什么,请在评论中提出,因为这让我很沮丧。谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-05-05 04:13:02

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

代码语言:javascript
复制
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的字符串。

票数 0
EN

Stack Overflow用户

发布于 2013-05-05 04:13:53

代码语言:javascript
复制
   dialog.dismiss();

您不能在doInBackground()上调用dismiss。与UI线程相关的每个方法都必须在UI线程上调用。

尝试使用:

代码语言:javascript
复制
runOnUiThread(new Runnable() {

    public void run() {
        dialog.dismiss();
    }
});
票数 0
EN

Stack Overflow用户

发布于 2013-05-05 06:12:36

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

我必须将这个方法移到onCreate();并且我必须通过一个名为onPostExecute的方法返回resultList值。

原来是原木猫编造的空指针,不知道为什么。谢谢你们,但我现在明白了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16378477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档