android SCHWERWIEGENDE AUSNAHME: AsyncTask #2
ich bin-Kodierung android-app, die aber während der Verwendung der asynchronen Aufgabe es ist, zu scheitern ,habe ich einen async-task und Fehler kommen in seiner doInBackground() Methode alles andere sieht gut aus, aber doInBackground () - Methode nicht richtig funktioniert . In doInBackground() Methode, die ich geschrieben habe, der code für das abrufen der Datensätze aus der Datenbank beim Debuggen habe ich festgestellt, dass Datensätze abgerufen werden, in der array-Liste, aber Sie sind nicht geeting zugeführt
onPostExecute(String result) bitte helfen Sie mir ...
private class LoadMoreAsync extends AsyncTask<Context, Void, String> {
private String strAddress;
public LoadMoreAsync(Context mContext,String strAddress) {
/*this.strCardNo = strCardNo;
this.strFirstName = strFirstName;
this.strMiddleName = strMiddleName;*/
this.strAddress = strAddress;
/*this.strCardNo = strCardNo;*/
}
@Override
protected void onPreExecute() {
super.onPreExecute();
ToastUtils.showToast(mContext, "Loading More...");
}
@Override
protected String doInBackground(Context... arg0) {
mVoterArray = new ArrayList<AddressInfo>();
mVoterArray = extDbUtil.getAddresslist(strAddress , limit += 20);
if (mVoterArray.isEmpty() || mVoterArray == null)
return null;
else
return "";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
IOUtils.stopLoading();
if (result == null) {
ToastUtils.showToast(mContext, "No Record Found!!");
} else {
int position = mListView.getLastVisiblePosition();
mListAdapter = new ListAdapterNew2(mContext,
android.R.layout.simple_list_item_1, mVoterArray);
mListView.setAdapter(mListAdapter);
mListView.setSelectionFromTop(position, 0);
mListAdapter.notifyDataSetChanged();
}
}
}
code für extDbUtil.getAddresslist(strAddress , limit += 20); - Methode ist
public ArrayList<AddressInfo> getAddresslist(String strAddress,int limit) {
open();
ArrayList<AddressInfo> mAddressArray = new ArrayList<AddressInfo>();
String mQuery = "SELECT Address1,TotalMale,TotalFemale,TotalVoters, SrNo FROM "
+ TABLE_ADDRESS;
String Where = "";
if (!strAddress.equals("NA")) {
Where = " WHERE EAddress1 Like '%" + strAddress + "%'";
}
Log.i("SearchQuery", mQuery + Where + " LIMIT " + limit);
Cursor mCursor = mDatabase.rawQuery(mQuery + Where + " LIMIT " + limit,
null);
if (mCursor != null) {
if (mCursor.moveToFirst()) {
do {
AddressInfo mAddress = new AddressInfo();
mAddress.setSrNO(mCursor.getString(mCursor
.getColumnIndex("SrNo")));
mAddress.setAddress(mCursor.getString(mCursor
.getColumnIndex("Address1")));
mAddress.setTotalMale(mCursor.getString(mCursor
.getColumnIndex("TotalMale")));
mAddress.setTotalFemal(mCursor.getString(mCursor
.getColumnIndex("TotalFemale")));
mAddress.setTotalVoter(mCursor.getString(mCursor
.getColumnIndex("TotalVoters")));
} while (mCursor.moveToNext());
}
}
mCursor.close();
CleanUp();
return mAddressArray;
}
kommenden Fehler ist
01-03 22:59:05.310: D/memalloc(15369): ion: Mapped buffer base:0x51d44000 size:4096 offset:0 fd:87
01-03 22:59:05.310: I/SearchQuery(15369): SELECT Address1,TotalMale,TotalFemale,TotalVoters, SrNo FROM Addresses WHERE EAddress1 Like '%R%' LIMIT 20
01-03 22:59:05.330: W/dalvikvm(15369): threadid=16: thread exiting with uncaught exception (group=0x41a09600)
01-03 22:59:05.340: D/memalloc(15369): ion: Mapped buffer base:0x555da000 size:196608 offset:0 fd:84
01-03 22:59:05.340: D/memalloc(15369): ion: Mapped buffer base:0x51d4b000 size:4096 offset:0 fd:90
01-03 22:59:05.340: E/AndroidRuntime(15369): FATAL EXCEPTION: AsyncTask #3
01-03 22:59:05.340: E/AndroidRuntime(15369): java.lang.RuntimeException: An error occured while executing doInBackground()
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.lang.Thread.run(Thread.java:864)
01-03 22:59:05.340: E/AndroidRuntime(15369): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.os.Handler.<init>(Handler.java:121)
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.widget.Toast$TN.<init>(Toast.java:322)
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.widget.Toast.<init>(Toast.java:91)
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.widget.Toast.makeText(Toast.java:238)
01-03 22:59:05.340: E/AndroidRuntime(15369): at com.phoenix.rajtantra.SearchByAdd$List_Async.doInBackground(SearchByAdd.java:284)
01-03 22:59:05.340: E/AndroidRuntime(15369): at com.phoenix.rajtantra.SearchByAdd$List_Async.doInBackground(SearchByAdd.java:1)
01-03 22:59:05.340: E/AndroidRuntime(15369): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-03 22:59:05.340: E/AndroidRuntime(15369): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-03 22:59:05.340: E/AndroidRuntime(15369): ... 5 more
01-03 22:59:05.540: D/memalloc(15369): ion: Mapped buffer base:0x5570a000 size:1536000 offset:0 fd:92
01-03 22:59:05.540: D/memalloc(15369): ion: Mapped buffer base:0x53c33000 size:4096 offset:0 fd:94
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Weg, den Sie überprüfen, wenn es irgendwelche Daten falsch ist. Dann lieber mit einem anderen String, überprüfen Sie die ArrayList selbst. Stellen Sie hier ändern
Und hier:
EDIT1:
in Ihrem getAdressList () - Methode, erstellen Sie eine AddressInfo Objekt. Aber Sie nie hinzufügen ArrayList. Das ist, warum Sie immer Toast mit keine Daten.
Wenn Sie Lesen Sie die stack-trace, zeigt Ihnen die Ursache:
Es ist eine andere Antwort hier auf SO deckt, dass diese Frage in einigen Details.