在没有 Activity 的另一个 class 文件中使用 Toast 扩展 Android
Using Toast in another class file without Activity extends Android
我有 2 个文件:Core(扩展 Activity)和 DwCore。我在 Core 子类中使用 AsyncTask,我想在 DwCore 子类中使用 Toast,但我无法正确获取 Core Context。
核心
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
dwCore.mainCounter(Core.this);
return totalSize;
}
}
DwCore 子类
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(c, count.toString(), Toast.LENGTH_SHORT).show();
}
}
您不能做任何影响工作线程 UI 的事情 - 包括显示 toasts。
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
publishProgress(check_point);
return totalSize;
}
}
protected void onProgressUpdate(Integer integers) {
dwCore.mainCounter(Core.this);
}
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(getActivity(), count.toString(), Toast.LENGTH_SHORT).show();
}
}
您可以使用 getActivity() 函数或 this.getActivity()。
getActivity() 可以在 Fragment 中用于获取 Fragment 的父级 Activity(基本上是显示 Fragment 的 Activity)。
无法完成,因为 doInBackGround 在无法访问 ui 线程的后台线程上运行。
您可以做的是,创建一个自定义接口,在您的 activity 上实现它,然后从 onProgressUpdate() 推送 ui 相关更新。
Interface ProgUpdate{
void uiUpdate(int update)
}
BackGround theread :
ProgUpdate listener;
onProgressUpdate(Int i){
listener.uiUpdate(i)
}
我有 2 个文件:Core(扩展 Activity)和 DwCore。我在 Core 子类中使用 AsyncTask,我想在 DwCore 子类中使用 Toast,但我无法正确获取 Core Context。
核心
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
dwCore.mainCounter(Core.this);
return totalSize;
}
}
DwCore 子类
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(c, count.toString(), Toast.LENGTH_SHORT).show();
}
}
您不能做任何影响工作线程 UI 的事情 - 包括显示 toasts。
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
publishProgress(check_point);
return totalSize;
}
}
protected void onProgressUpdate(Integer integers) {
dwCore.mainCounter(Core.this);
}
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(getActivity(), count.toString(), Toast.LENGTH_SHORT).show();
}
}
您可以使用 getActivity() 函数或 this.getActivity()。
getActivity() 可以在 Fragment 中用于获取 Fragment 的父级 Activity(基本上是显示 Fragment 的 Activity)。
无法完成,因为 doInBackGround 在无法访问 ui 线程的后台线程上运行。 您可以做的是,创建一个自定义接口,在您的 activity 上实现它,然后从 onProgressUpdate() 推送 ui 相关更新。
Interface ProgUpdate{
void uiUpdate(int update)
}
BackGround theread :
ProgUpdate listener;
onProgressUpdate(Int i){
listener.uiUpdate(i)
}