如何在android中完成AsyncTask类的活动?
我有一个汉堡包菜单的活动。当我点击汉堡菜单注销入口时,它将调用一个如何在android中完成AsyncTask类的活动?,android,android-asynctask,activity-finish,Android,Android Asynctask,Activity Finish,我有一个汉堡包菜单的活动。当我点击汉堡菜单注销入口时,它将调用一个AsyncTask。调用API后,如果状态代码指示成功,那么我需要调用loginactivity。到目前为止,它工作正常,但我的问题是,当我在登录中按下后退按钮时,它会返回到上一个屏幕。如何解决这个问题?如何在AsyncTask中完成活动 public class LandingActivityNew extends AppCompatActivity { mNavigationView.setNavigationItemS
AsyncTask
。调用API后,如果状态代码指示成功,那么我需要调用loginactivity。到目前为止,它工作正常,但我的问题是,当我在登录中按下后退按钮时,它会返回到上一个屏幕。如何解决这个问题?如何在AsyncTask中完成活动
public class LandingActivityNew extends AppCompatActivity {
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
drawerLayout.closeDrawers();
int id = menuItem.getItemId();
switch (id){
case R.id.navItemSettings:
Intent iSettings = new Intent(LandingActivityNew.this,SettingsActivity.class);
startActivity(iSettings);
finish();
break;
case R.id.navItemTC:
// Toast.makeText(LandingActivityNew.this, "Settings", Toast.LENGTH_LONG).show();
Intent iTerms = new Intent(LandingActivityNew.this,TermsConditions.class);
startActivity(iTerms);
break;
case R.id.navItemPrivacy:
//Toast.makeText(LandingActivityNew.this, "Privacy", Toast.LENGTH_LONG).show();
Intent iPrivacy = new Intent(LandingActivityNew.this,ConsentActivity.class);
startActivity(iPrivacy);
break;
case R.id.navItemReportProblem:
Toast.makeText(LandingActivityNew.this, "Report a Problem", Toast.LENGTH_LONG).show();
break;
case R.id.navItemFAQ:
Toast.makeText(LandingActivityNew.this, "FAQ", Toast.LENGTH_LONG).show();
break;
case R.id.navItemShare:
Toast.makeText(LandingActivityNew.this, "Share", Toast.LENGTH_LONG).show();
break;
case R.id.navItemLogout:
new LogoutAsyncTask(LandingActivityNew.this).execute();
break;
}
return false;
}
});
}
像这样的异步任务类
public class LogoutAsyncTask extends AsyncTask<String,String,String> {
Context context;
public LogoutAsyncTask(Context context){
this.context = context;
}
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... params) {}
@Override
protected void onPostExecute(String file_url) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
int appStatusCode = getLogoutResponse.getAppStatusCode();
if (appStatusCode == Constants.APP_STATUS_CODE_SUCCESS) {
***Intent logout=new Intent(context,LoginActivity.class);
context.startActivity(logout);
((Activity)context).finish();***
} else {
ExceptionMessages.showAlertDialog(context, "Unable to Logout", getLogoutResponse.getMessages().get(0), true);
}
}
}
公共类LogoutAsyncTask扩展了AsyncTask{
语境;
公共LogoutAsyncTask(上下文){
this.context=上下文;
}
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的字符串doInBackground(字符串…参数){}
@凌驾
受保护的void onPostExecute(字符串文件\u url){
if(pDialog.isShowing()){
pDialog.disclose();
}
int-appStatusCode=getLogoutResponse.getAppStatusCode();
if(appStatusCode==常量。应用程序状态代码成功){
***意图注销=新意图(上下文、LoginActivity.class);
上下文。开始触觉(注销);
((活动)上下文).finish()***
}否则{
ExceptionMessages.showAlertDialog(上下文,“无法注销”,getLogoutResponse.getMessages().get(0),true);
}
}
}
在onPost()中,我需要完成活动调用,如何完成?试试这种方法
Intent iobj = new Intent(Activity_First.this, Activity_Second.class);
iobj.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(iobj);
这样试试看
Intent iobj = new Intent(Activity_First.this, Activity_Second.class);
iobj.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(iobj);
如何在android中完成AsyncTask类的活动
因为传递LandingActivityNew.this
在LogoutAsyncTask
类中。按如下方式操作:
((LandingActivityNew)context).finish();
在onPostExecute
方法中
Intent logout=new Intent(yourActivity.this,LoginActivity.class);
yourActivity.this.startActivity(logout);
yourActivity.this.finish();
如何在android中完成AsyncTask类的活动
因为传递LandingActivityNew.this
在LogoutAsyncTask
类中。按如下方式操作:
((LandingActivityNew)context).finish();
在onPostExecute
方法中
Intent logout=new Intent(yourActivity.this,LoginActivity.class);
yourActivity.this.startActivity(logout);
yourActivity.this.finish();
希望它能起作用。塔克斯。如果这不起作用,告诉我我给你更好的答案
希望它能起作用。塔克斯。如果这不起作用,请告诉我我给你更好的答案用以下代码更改LogoutAsyncTask:
public class LogoutAsyncTask extends AsyncTask<String, String, String> {
Activity activity;
LandingActivityNew obj;
public LogoutAsyncTask(Activity activity) {
this.activity = activity;
obj = activity.getApplicationContext();
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
}
@Override
protected void onPostExecute(String file_url) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
int appStatusCode = getLogoutResponse.getAppStatusCode();
if (appStatusCode == Constants.APP_STATUS_CODE_SUCCESS) {
***Intent logout=new Intent(activity,LoginActivity.class);
activity.startActivity(logout);
obj.finish();
} else {
ExceptionMessages.showAlertDialog(activity, "Unable to Logout", getLogoutResponse.getMessages().get(0), true);
}
}
}
公共类LogoutAsyncTask扩展了AsyncTask{
活动;
着陆活动新obj;
公共LogoutAsyncTask(活动){
这个。活动=活动;
obj=activity.getApplicationContext();
}
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
}
@凌驾
受保护的void onPostExecute(字符串文件\u url){
if(pDialog.isShowing()){
pDialog.disclose();
}
int-appStatusCode=getLogoutResponse.getAppStatusCode();
if(appStatusCode==常量。应用程序状态代码成功){
***意向注销=新意向(活动、LoginActivity.class);
活动。开始触觉(注销);
obj.finish();
}否则{
ExceptionMessages.showAlertDialog(活动“无法注销”,getLogoutResponse.getMessages().get(0),true);
}
}
}
使用以下代码更改LogoutAsyncTask:
public class LogoutAsyncTask extends AsyncTask<String, String, String> {
Activity activity;
LandingActivityNew obj;
public LogoutAsyncTask(Activity activity) {
this.activity = activity;
obj = activity.getApplicationContext();
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
}
@Override
protected void onPostExecute(String file_url) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
int appStatusCode = getLogoutResponse.getAppStatusCode();
if (appStatusCode == Constants.APP_STATUS_CODE_SUCCESS) {
***Intent logout=new Intent(activity,LoginActivity.class);
activity.startActivity(logout);
obj.finish();
} else {
ExceptionMessages.showAlertDialog(activity, "Unable to Logout", getLogoutResponse.getMessages().get(0), true);
}
}
}
公共类LogoutAsyncTask扩展了AsyncTask{
活动;
着陆活动新obj;
公共LogoutAsyncTask(活动){
这个。活动=活动;
obj=activity.getApplicationContext();
}
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
}
@凌驾
受保护的void onPostExecute(字符串文件\u url){
if(pDialog.isShowing()){
pDialog.disclose();
}
int-appStatusCode=getLogoutResponse.getAppStatusCode();
if(appStatusCode==常量。应用程序状态代码成功){
***意向注销=新意向(活动、LoginActivity.class);
活动。开始触觉(注销);
obj.finish();
}否则{
ExceptionMessages.showAlertDialog(活动“无法注销”,getLogoutResponse.getMessages().get(0),true);
}
}
}
您所说的“完成活动呼叫”是什么意思?您想完成活动吗?您所说的“完成活动呼叫”是什么意思?你想完成活动吗?很好很干净的解决方案!但在许多屏幕中使用的注销任务……那么我如何在post()上应用特定的类名呢????这是一个很好的干净解决方案!但是注销异步任务在许多屏幕中都使用…那么我如何在POST()上应用特定的类名?这里logoutAsyncTask是一个单独的类。。。此asynctask是从许多活动中调用的logoutAsyncTask是一个单独的类。。。此asynctask在许多活动中调用如果我在landingActivitynew中调用此asynctask,则这是确定的。。。但是我从不同的类中调用了这个LogoutAsyncTask。。。那么我如何在AsyncTask中创建特定的类对象???是的,我尝试了。。。它只适用于着陆活动新建。。。但它不适用于其他课程…谢谢你的老板。。。这对于Asynctask的特定活动非常有效。如果我从landingActivitynew调用此Asynctask,则可以。。。但是我从不同的类中调用了这个LogoutAsyncTask。。。那么我如何在AsyncTask中创建特定的类对象???是的,我尝试了。。。它只适用于着陆活动新建。。。但它不适用于其他课程…谢谢你的老板。。。这对于Asynctask的特定活动非常有效。我调用的是Asynctask而不是活动。。。n我想在onPost()中完成活动,只需编写您的活动。this.finish();在AsyncTask的onPost方法中,我正在调用AsyncTask而不是活动。。。n我想在onPost()中完成活动,只需编写您的活动。this.finish();异步任务的onPost方法