Android 在我的异步类中找不到方法

Android 在我的异步类中找不到方法,android,android-asynctask,Android,Android Asynctask,我正在创建一个Android应用程序,可以使用HTTP delete从JSON中删除数据。但我面临着这个问题。我已经创建了两个不同的文件。一个是MainActivity,另一个是Async MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate

我正在创建一个Android应用程序,可以使用HTTP delete从JSON中删除数据。但我面临着这个问题。我已经创建了两个不同的文件。一个是MainActivity,另一个是Async

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    onClickButtonListner();
}

public void onClickButtonListner() {
    final Button btn = (Button) findViewById(R.id.delete_btn);
    final String URL = myurl;
    btnDelete.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Async asyn = new Async(URL);
                    asyn.execute();
                }
            });
 }
}
Async.java

public class Async extends AsyncTask<Void, Void, String>  {
String murl;
public Async(String url) {
    murl = url;
}

 @Override
protected String doInBackground(Void... params) {
     HttpURLConnection httpURLConnection;
     URL url ;
     try {
         final EditText id= (EditText)findViewById(R.id.delete_id);
         **showing unable to resolve method findViewById**
         String delete_url = murl + "/" + id.getText().toString();
         url = new URL(delete_url);
         httpURLConnection = (HttpURLConnection) url.openConnection();
         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         httpURLConnection.setRequestMethod("DELETE");
         httpURLConnection.connect();
     } catch (IOException e) {
         e.printStackTrace();
     }
    return null;
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
}
公共类异步扩展异步任务{
弦乐;
公共异步(字符串url){
murl=url;
}
@凌驾
受保护字符串doInBackground(无效…参数){
HttpURLConnection HttpURLConnection;
网址;
试一试{
最终EditText id=(EditText)findViewById(R.id.delete_id);
**显示无法解析方法findViewById**
字符串delete_url=murl+“/”+id.getText().toString();
url=新url(删除url);
httpURLConnection=(httpURLConnection)url.openConnection();
httpURLConnection.setRequestProperty(“内容类型”,“应用程序/x-www-form-urlencoded”);
httpURLConnection.setRequestMethod(“删除”);
httpURLConnection.connect();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
}
}

所以我的问题是,我的异步类显示无法找到findViewById方法

所以请帮我解决这个问题
谢谢

尝试按以下方式更改代码:

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
onClickButtonListner();
}

public void onClickButtonListner() {
final Button btn = (Button) findViewById(R.id.delete_btn);
final String URL = myurl;
final EditText id= (EditText)findViewById(R.id.delete_id);
btnDelete.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Async asyn = new Async(URL,id.getText().toString());
                asyn.execute();
            }
        });
}
}
    public class Async extends AsyncTask<Void, Void, String>  {
String murl,id;
public Async(String url,String _id) {
    murl = url;
    id=_id;
}

 @Override
protected String doInBackground(Void... params) {
     HttpURLConnection httpURLConnection;
     URL url ;
     try {
         String delete_url = murl + "/" + id;
         url = new URL(delete_url);
         httpURLConnection = (HttpURLConnection) url.openConnection();
         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         httpURLConnection.setRequestMethod("DELETE");
         httpURLConnection.connect();
     } catch (IOException e) {
         e.printStackTrace();
     }
    return null;
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
}
}
Async.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
onClickButtonListner();
}

public void onClickButtonListner() {
final Button btn = (Button) findViewById(R.id.delete_btn);
final String URL = myurl;
final EditText id= (EditText)findViewById(R.id.delete_id);
btnDelete.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Async asyn = new Async(URL,id.getText().toString());
                asyn.execute();
            }
        });
}
}
    public class Async extends AsyncTask<Void, Void, String>  {
String murl,id;
public Async(String url,String _id) {
    murl = url;
    id=_id;
}

 @Override
protected String doInBackground(Void... params) {
     HttpURLConnection httpURLConnection;
     URL url ;
     try {
         String delete_url = murl + "/" + id;
         url = new URL(delete_url);
         httpURLConnection = (HttpURLConnection) url.openConnection();
         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         httpURLConnection.setRequestMethod("DELETE");
         httpURLConnection.connect();
     } catch (IOException e) {
         e.printStackTrace();
     }
    return null;
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
}
}
公共类异步扩展异步任务{
字符串murl,id;
公共异步(字符串url、字符串id){
murl=url;
id=_id;
}
@凌驾
受保护字符串doInBackground(无效…参数){
HttpURLConnection HttpURLConnection;
网址;
试一试{
字符串delete_url=murl+“/”+id;
url=新url(删除url);
httpURLConnection=(httpURLConnection)url.openConnection();
httpURLConnection.setRequestProperty(“内容类型”,“应用程序/x-www-form-urlencoded”);
httpURLConnection.setRequestMethod(“删除”);
httpURLConnection.connect();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
}
}

Thank you@pRaNaY Now我还想使用单个异步任务实现GET、POST和PUT。目前,我对每个GET、POST和PUT都有不同的AsyncTask。那么告诉我如何在这两者之间切换。意味着当我按下Update时,异步任务中的Update方法将运行etcYou,您可以在Asynk构造函数中添加新参数以实现其他方法。e、 g:
public-Async(String-url,String-id,String-methodType){..}
并在
doInBackground
中使用方法类型。