Java Android:如何获取调用类的活动
我有活动1和活动2。两者都可以调用名为fetchData.java的类。在fetchData.java中有没有什么方法可以让我获得称之为它的活动 以下是我的fetchData.java:Java Android:如何获取调用类的活动,java,android,Java,Android,我有活动1和活动2。两者都可以调用名为fetchData.java的类。在fetchData.java中有没有什么方法可以让我获得称之为它的活动 以下是我的fetchData.java: public class fetchData extends AsyncTask<String,String,String> { @Override protected String doInBackground(String... voids) { //do someth
public class fetchData extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... voids) {
//do something
}
@Override
protected void onPostExecute(String aVoid) {
super.onPostExecute(aVoid);
}
}
我能看到的唯一方法是在构造函数中传递活动:
public class FetchData extends AsyncTask<String, String, String> { //rename fetchData to FetchData to follow Java coding practices
private Activity activity;
public FetchData(Activity activity) {
this.activity = activity;
}
@Override
protected String doInBackground(String... strings) { //use the proper variable names
//...
}
@Override
protected void onPostExecute(String string) { //use the proper variable names
//use instanceof to check the identity of the activity instance
if (activity instanceof Activity1) {
//whatever
} else if (activity instanceof Activity2) {
//whatever else
}
//super call isn't needed
}
}
注意我的评论。我对您的代码做了一些更改,以提高可读性并更好地符合Java的编码标准
在其他情况下,您可能能够读取stacktrace并找到调用类,但由于您使用的是在另一个线程上运行的AsyncTask,因此stacktrace只能追溯到创建线程时,因此在这里无法工作。调用类意味着什么?对不起。我添加了fetchData.java代码
public class FetchData extends AsyncTask<String, String, String> { //rename fetchData to FetchData to follow Java coding practices
private Activity activity;
public FetchData(Activity activity) {
this.activity = activity;
}
@Override
protected String doInBackground(String... strings) { //use the proper variable names
//...
}
@Override
protected void onPostExecute(String string) { //use the proper variable names
//use instanceof to check the identity of the activity instance
if (activity instanceof Activity1) {
//whatever
} else if (activity instanceof Activity2) {
//whatever else
}
//super call isn't needed
}
}
FetchData getValues = new FetchData(this);
getValues.execute();