-2

I want to execute a search command this way but indicate error, any other way to modify this

```public class UserActivity extends AppCompatActivity {
  private ImageView im;
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.userpage);
  im = (ImageView) findViewById(R.id.search);
  im.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
           SearchTask();
        }
   });
  static class SearchTask extends AsyncTask<Void, Void, Void>{
        //TO DO
    }
 }```

Unfortunately the static class always indicates an error that is:Method call expected

  • Please read [mcve] and then enhance your question accordingly. "indicates an error I dont get" isnt a problem description we could help with. – GhostCat Mar 15 '22 at 13:31

2 Answers2

0

SearchTask is a class and you need to instantiate it before use.

Replace

SearchTask();

with

final SearchTask cSearchTask = new SearchTask();
cSearchTask.execute(...);

PS: pay attention that AsyncTask are deprecated in newer Android 11+ (The AsyncTask API is deprecated in Android 11. What are the alternatives?)

emandt
  • 2,547
  • 2
  • 16
  • 20
0

Your AsyncTask Implementation is wrong

Example Snippet from SO answer

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
             // Escape early if cancel() is called
             if (isCancelled()) break;
         }
         return totalSize;
     }

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

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }

Then use new DownloadFilesTask().execute(url1, url2, url3);

Change your code like so

im.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
           new SearchTask().execute(url1,url2,url3);
        }
   });

Narendra_Nath
  • 4,578
  • 3
  • 13
  • 31