这是我从它获得一个指向第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;
}
如果还需要其他任何内容,请在评论中提问,因为此刻令我感到沮丧。谢谢
答案 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值。
原来日志猫正在组成空指针,不知道为什么。谢谢你们,但我现在明白了。