我有一个ArrayAdapter从一个收集信息AsyncTask.的AsyncTask由上滚动监听器触发.当用户滚动到内容的底部时,将AsyncTask触发并加载更多内容.问题是我已经实现了一个重置按钮.这样做是清除ArrayAdapter并重置通过JSON发送到收集信息的PHP脚本的令牌.重置按钮根本不起作用.当我调用clear()它时,有时会清除列表,然后添加新数据,但是onScrollListener它不起作用,或者它不会清除列表,只是将新数据添加到列表顶部.这是我的代码,所有这些代码都在同一个活动中.
用于PHP脚本的全局类令牌
class CommentInfo {
public CommentInfo() {}
private String commentID;
private int gatheredComments;
private int totalComments;
public String getCommentID(){
return commentID;
}
public void setCommentID(String c){
commentID = c;
}
public int getGatheredComments(){
return gatheredComments;
}
public void setGatheredComments(int forNumber){
gatheredComments = forNumber;
}
}//end commentInfor class
final CommentInfo info = new CommentInfo();
info.setCommentID("0");
Run Code Online (Sandbox Code Playgroud)
该类包含全局变量.CommentID设置为0.这是通过Json发送到PHP脚本.在收集一组注释后,它会将CommentID重置为收集的最后一条注释的ID.单击"重置"按钮时,它会将CommentID重置为0,就像"Activity"刚刚开始一样.
ASYNCTASK收集评论并使用全局变量
class loadComments extends AsyncTask<JSONObject, String, JSONObject> {
@Override
protected …Run Code Online (Sandbox Code Playgroud) android listview global-variables android-arrayadapter android-asynctask
我试图允许我的应用程序在旧版Android,特别是API 10上运行.
我已经下载了支持包并用它们来解决一些问题但是我很难解决这个问题:
字段需要API级别11(当前最小值为10):android.os.AsyncTask #THREAD_POOL_EXECUTOR
Thread_Pool_Executor方法仅在API 11中添加.
有什么办法可以在API 10中使用它,或者我必须恢复到:
myAsyncTask().execute();
Run Code Online (Sandbox Code Playgroud)
代替:
myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Run Code Online (Sandbox Code Playgroud)
如果是这样,我如何检查API级别?
我是android编程新手,我不能确定哪个触发错误.我有这个错误:
10-29 02:34:17.989: E/AndroidRuntime(853): FATAL EXCEPTION: AsyncTask #1
10-29 02:34:17.989: E/AndroidRuntime(853): java.lang.RuntimeException: An error occured while executing doInBackground()
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-29 02:34:17.989: E/AndroidRuntime(853): at java.lang.Thread.run(Thread.java:841)
10-29 02:34:17.989: E/AndroidRuntime(853): Caused by: java.lang.NullPointerException
10-29 02:34:17.989: E/AndroidRuntime(853): at com.agf.tripassigner.CreateTripActivity$CreateTrip.doInBackground(CreateTripActivity.java:104)
10-29 02:34:17.989: E/AndroidRuntime(853): at com.agf.tripassigner.CreateTripActivity$CreateTrip.doInBackground(CreateTripActivity.java:1)
10-29 02:34:17.989: E/AndroidRuntime(853): at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-29 …Run Code Online (Sandbox Code Playgroud) 我在SO上看到了所有类似的问题,我在其他活动中使用了AsyncTask,但只有这一个没有调用onPostexecute.
这是我的代码在几小时后尝试.
class GetCamera1Task extends AsyncTask<Void, Void, Integer> {
private final ProgressDialog dialog = new ProgressDialog(
CameraGallery.this);
@Override
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.show();
}
protected void onPostExecute(int result) {
System.out.println("onPostExecute");
this.dialog.dismiss();
}
@Override
protected Integer doInBackground(Void... params) {
// TODO Auto-generated method stub
bitmapResult1 = getBitmapFromURL(url[0]);
bitmapResult2 = getBitmapFromURL(url[1]);
}
System.out.println("should return");
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
其中所有变量都是全局变量.正在打印应该返回但是没有调用onPost执行.
我也试过我的onBackground返回null和sceleton如下:
class GetCamera1Task extends AsyncTask<Void, Void, Void> {
protected void onPostExecute() {
}
protected Integer doInBackground(Void... params) {
... return null;
} …Run Code Online (Sandbox Code Playgroud) 我的Async任务遇到问题.我有一些正常的操作要在后台完成,并在完成后查看结果,但是尽管我的代码在doinbackground块中,但UI仍会冻结.请帮我!
下面是我的代码.
class DownloadFileFromURL extends AsyncTask<String, Void, String> {
/**
* Before starting background thread Show Progress Bar Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = ProgressDialog.show(Interface.this, null, "Loading...", true);
}
/**
* Downloading file in background thread
* */
@Override
protected String doInBackground(String... f_url) {
//
// Toast.makeText(getApplicationContext(), "Executing",
// 3000).show();
runOnUiThread(new Runnable() {
public void run() {
Calculate();
}
});
return null;
}
/**
* Updating progress bar
* */
protected void onProgressUpdate(String... progress) { …Run Code Online (Sandbox Code Playgroud) 我有一个异步任务,加载项目的列表视图.我目前正在尝试设置onClick以加载一个带有"id"的新片段,该片段是从单击的列表项中检索的.我的代码中没有Android Studio向我显示的错误.
当我运行应用程序并单击列表视图中的项目时,我得到了这个FC:
02-13 19:49:56.813 20334-20334/com.beerportfolio.beerportfoliopro E/AndroidRuntime? FATAL EXCEPTION: main
java.lang.NullPointerException
at com.beerportfolio.beerportfoliopro.ReadJSONResult$1.onItemClick(ReadJSONResult.java:140)
at android.widget.AdapterView.performItemClick(AdapterView.java:298)
at android.widget.AbsListView.performItemClick(AbsListView.java:1237)
at android.widget.ListView.performItemClick(ListView.java:4555)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3037)
at android.widget.AbsListView$1.run(AbsListView.java:3724)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5789)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
at dalvik.system.NativeStart.main(Native Method)
02-13 19:50:42.112 20864-20870/? E/jdwp? Failed sending reply to debugger: Broken pipe
Run Code Online (Sandbox Code Playgroud)
ReadJSONResult中的第140行是:
listenerBeer.onArticleSelected(idToSend);
Run Code Online (Sandbox Code Playgroud)
该行是整个onClick的一部分:
//set up clicks
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
BeerData beerInfo = beerList.get(arg2);
String …Run Code Online (Sandbox Code Playgroud) 我正在开发一个需要与远程服务器进行大量通信的Android应用程序.为此,我编写了一个处理所有网络通信的类.
我是否需要为每一种方法制作一个Asynctask?对于其余的代码执行,我依赖的方法呢?(因此需要同步完成 - 比如在注册时等待答案?)
我问这个是因为我之前已经有一个小应用程序与远程服务器进行通信而我没有使用任何Asynctasks,这一个在所有被调用的方法崩溃.
编辑 -
同时 - 在创建我自己的课程之前,我发现了一个与谷歌图书馆相关的精彩教程已经处理了图书馆名称是Volley我看过的教程就是这个
我是android新手并开发一个测试应用程序来命中服务器并获得json响应.这是我的主要活动 -
public class MainPageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
new DownloadWebpageTask().doInBackground("http://49.139.144.194:8080/ServerForMyAndroid/MusicServlet");
return false;
}
};
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
}
AsyncTask类是 -
public class DownloadWebpageTask extends AsyncTask<String, Void, String> { …Run Code Online (Sandbox Code Playgroud) 我一直在做一堆研究并查看Android中ASyncTask的文档,但我似乎无法绕过它.我只是想在一个片段在应用程序中可见时运行一些方法,但为了更容易做到这一点,我想我应该使用ASyncTask.我的示例代码如下:
private class syncExample extends ASyncTask <Void, Void, Void>
{
@Override
protected void onPreExecute()
{
}
@Override
protected void doInBackground(Void... voids)
{
}
@Override
protected void onProgressUpdate()
{
}
@Override
protected void onPostExecute()
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题如下:
在尖括号中,我有Void,Void,Void.这些代表到底是什么,我怎么知道在那里放置什么是正确的?
对于类中的每个方法,我将每个方法称为void.它们何时应该与void不同(如boolean,String,long等)?
对于doInBackground方法,我在括号中有Void ...空格.我究竟应该把它放在那里?它们代表什么?
谢谢您的帮助.关于这个的文档对于像我这样的初学者来说并不是很清楚.
我写了一个Asynctask as
private class dboperation extends AsyncTask<Void, Void, Cursor>
Run Code Online (Sandbox Code Playgroud)
我是Android的新手并且通过在谷歌中搜索很多但是如何使用这些参数调用来自另一个类的异步任务.
码
private class dboperation extends AsyncTask<Void, Void, Cursor>{
@Override
protected Cursor doInBackground(Void... params) {
// TODO Auto-generated method stub
getstocks="Select " + st.column1 + " as _id, " + st.column3 + " From "+ st.tablename;
a1=Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(getstocks, null);
return null;
}
protected void onPostExecute(Cursor result) {
if(a1.moveToNext())
{
displaystocks.setVisibility(View.INVISIBLE);
}
final poplist populatestocks=new poplist(getApplicationContext(),a1) ;
popstocks.setAdapter(populatestocks);
}
@Override
protected void onPreExecute() {
}
protected void onProgressUpdate(Void... values) {
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样打电话时,它给了我错误" …