在 Android 中从 AsyncTask (PostExecute) 启动 Activity
Start an Activiy from an AsyncTask (PostExecute) in Android
我读了很多关于它的问题,有人解决了我的问题。我有一个 AsyncTask,其中必须启动一个新的 activity。代码如下:
public class UpdateCatalog extends AsyncTask <Void,Integer,Void> {
private Context context;
private LoadActivity activity;
public UpdateCatalog(LoadActivity activity) {
super();
this.activity = activity;
this.context = this.activity.getApplicationContext();
}
.
.
.
@Override
protected void onPostExecute(final Void result) {
// Update your views here
LoadActivity.progressStatus.setVisibility(View.GONE);
context.startActivity(new Intent(context, DownloadImages.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
对这个 AsincTask 的调用在启动 AsincTask 的 Activity 中,如下所示:
public class LoadActivity extends AppCompatActivity {
public static TextView txtStatus;
public static ProgressBar progressStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_load);
txtStatus = (TextView) findViewById(R.id.progressStatus);
progressStatus = (ProgressBar) findViewById(R.id.progressBar);
if(CheckCatalog()){
ShowUpdateDialog();
}
else
new UpdateCatalog(this).execute();
}
错误如下:
FATAL EXCEPTION: main
android.content.ActivityNotFoundException: Unable to find explicit activity class {es.aplicaciones.alvaro.entrelazadas/es.aplicaciones.alvaro.entrelazadas.DownloadImages};
DownloadImages.class 已经创建。所以我认为这不是问题。我尝试使用其他方法将上下文作为参数传递,但它仍然无法正常工作。
你能帮帮我吗?
记住,您必须在 AndroidManifest.xml
文件中声明每个 activity :)
<activity android:name=".DownloadImages" />
检查您的清单文件。
如果您的 DownloadImages
class 在清单文件中声明的 "base" 包中,则添加 activity 和 .ClassName
<application>
....
<activity android:name=".DownloadImages" />
</application>
其他
写下 DownloadImages
class.
的完整路径
<application>
....
<activity android:name="com.example.path.DownloadImages" />
</application>
我读了很多关于它的问题,有人解决了我的问题。我有一个 AsyncTask,其中必须启动一个新的 activity。代码如下:
public class UpdateCatalog extends AsyncTask <Void,Integer,Void> {
private Context context;
private LoadActivity activity;
public UpdateCatalog(LoadActivity activity) {
super();
this.activity = activity;
this.context = this.activity.getApplicationContext();
}
.
.
.
@Override
protected void onPostExecute(final Void result) {
// Update your views here
LoadActivity.progressStatus.setVisibility(View.GONE);
context.startActivity(new Intent(context, DownloadImages.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
对这个 AsincTask 的调用在启动 AsincTask 的 Activity 中,如下所示:
public class LoadActivity extends AppCompatActivity {
public static TextView txtStatus;
public static ProgressBar progressStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_load);
txtStatus = (TextView) findViewById(R.id.progressStatus);
progressStatus = (ProgressBar) findViewById(R.id.progressBar);
if(CheckCatalog()){
ShowUpdateDialog();
}
else
new UpdateCatalog(this).execute();
}
错误如下:
FATAL EXCEPTION: main
android.content.ActivityNotFoundException: Unable to find explicit activity class {es.aplicaciones.alvaro.entrelazadas/es.aplicaciones.alvaro.entrelazadas.DownloadImages};
DownloadImages.class 已经创建。所以我认为这不是问题。我尝试使用其他方法将上下文作为参数传递,但它仍然无法正常工作。 你能帮帮我吗?
记住,您必须在 AndroidManifest.xml
文件中声明每个 activity :)
<activity android:name=".DownloadImages" />
检查您的清单文件。
如果您的 DownloadImages
class 在清单文件中声明的 "base" 包中,则添加 activity 和 .ClassName
<application>
....
<activity android:name=".DownloadImages" />
</application>
其他
写下 DownloadImages
class.
<application>
....
<activity android:name="com.example.path.DownloadImages" />
</application>