Android activity.finish()未在当前活动中停止
我创建了一个android应用程序,它使用异步任务调用web服务, 当身份验证失败时,用户将停止当前活动并重定向回登录页面 我的问题是,当用户重定向回登录页面时,toast文本仍然显示,该toast文本位于异步线程onpostexute事件下 这个问题有什么解决办法吗 在webService.cs中Android activity.finish()未在当前活动中停止,android,android-asynctask,Android,Android Asynctask,我创建了一个android应用程序,它使用异步任务调用web服务, 当身份验证失败时,用户将停止当前活动并重定向回登录页面 我的问题是,当用户重定向回登录页面时,toast文本仍然显示,该toast文本位于异步线程onpostexute事件下 这个问题有什么解决办法吗 在webService.cs中 catch (UnauthorizedException ua) { Log.d(tag, ua.getMessage()); Intent intent = new
catch (UnauthorizedException ua) {
Log.d(tag, ua.getMessage());
Intent intent = new Intent(activity, LoginActivity.class);
if(condition a){
intent.putExtra("toast_text", R.string.a);
}else{
intent.putExtra("toast_text", R.string.b);
}
activity.finish();
activity.startActivity(intent);
}
return null;
然后在asyncTask.cs中
protected JSONArray doInBackground(String... parameters) {
ConnectivityManager cm =
(ConnectivityManager) SingleFormActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
if (isConnected) {
}
return null;
}
public void onPostExecute(JSonArray result){
if(result != null){
}else{
Toast.makeText(Something.this, R.string.b, Toast.LENGTH_LONG).show();
}
}
你可以用
像烤面包一样制作
Toast toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
在调用finish之前,使用下面的代码取消toast
if (toast != null )
toast.cancel();
你可以用
像烤面包一样制作
Toast toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
在调用finish之前,使用下面的代码取消toast
if (toast != null )
toast.cancel();
当身份验证失败时,用户将停止当前活动并重定向回登录页面 有了上面的问题,我假设您有两个不同的活动,一个用于登录,另一个用于做一些同样显示toast消息的事情。如果正确,则在展示祝酒词之前检查活动是否已结束,如果未完成,则展示祝酒词
if(!isFinishing()){
// show toast
}
当身份验证失败时,用户将停止当前活动并重定向回登录页面 有了上面的问题,我假设您有两个不同的活动,一个用于登录,另一个用于做一些同样显示toast消息的事情。如果正确,则在展示祝酒词之前检查活动是否已结束,如果未完成,则展示祝酒词
if(!isFinishing()){
// show toast
}
在onPause中添加以下代码
if(isFinishing()){
if (toast != null || toast.getView().getWindowVisibility() == View.VISIBLE) {
toast.cancel();
}
}
在onPause中添加以下代码
if(isFinishing()){
if (toast != null || toast.getView().getWindowVisibility() == View.VISIBLE) {
toast.cancel();
}
}
像这样试试
从doInBackground.com返回请求状态,并在onPostExecute中使用该状态显示toast
这段代码可能有语法错误,但我希望它能帮助你
public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> {
private MyInterface mListener;
public AsyncConnectTask(Context context, String address, String user,
String pass, int port, MyInterface mListener) {
}
@Override
protected Boolean doInBackground(Void... params) {
....
return result;
}
@Override
protected void onPostExecute(Boolean result) {
if (result == true) {
//Show toast here
}else{
}
}
}
像这样试试
从doInBackground.com返回请求状态,并在onPostExecute中使用该状态显示toast
这段代码可能有语法错误,但我希望它能帮助你
public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> {
private MyInterface mListener;
public AsyncConnectTask(Context context, String address, String user,
String pass, int port, MyInterface mListener) {
}
@Override
protected Boolean doInBackground(Void... params) {
....
return result;
}
@Override
protected void onPostExecute(Boolean result) {
if (result == true) {
//Show toast here
}else{
}
}
}
请显示一些代码如果你在这里引用代码部分会更好。请显示一些代码如果你在这里引用代码部分会更好。让我知道你的结果让我知道你的结果