Пробовал все, кроме android finish(); активность не работает
Мы попробовали все, чтобы закончить определенную деятельность, но не смогли этого сделать. Код работает без каких-либо ошибок или предупреждений, которые просто не могут завершить работу. Мы пробовали все решения в stackoverflow вместе с другими форумами. Нужно решение с объяснением.
Действие Android() Не работает
Работа в отделе Android не работает
Контекст активности андроидов
public void HttpSmsRequest(final String Phone){
final ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...";
pDialog.show();
Map<String, String> jsonParams = new HashMap<String, String>();
// jsonParams.put("param1", youParameter);
jsonParams.put("Phone", Phone);
//jsonParams.put("rememberMe", "true";
JsonObjectRequest myRequest = new JsonObjectRequest(
Request.Method.POST,
AppGlobal.host+"PhoneVerification/sendSms",
new JSONObject(jsonParams),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try
{
Log.v("Success", "success: " + response.toString());
//MessageBox.Show(ProfileInfoActivity.this, "Response: " + response.toString());
pDialog.dismiss();
JSONObject obj=new JSONObject(response.toString());
// String ID=obj.getString("ID";
String Flag=obj.getString("Flag";
String Message=obj.getString("Message";
// Context context = getApplicationContext();
//
/// appPrefs.setUserIdentity(Integer.parseInt(ID));
if(Boolean.parseBoolean(Flag))
{
Intent intent=new Intent(PhoneVerificationActivity.this,ConfirmSms.class);
intent.putExtra("PhoneNumber", Phone);
//intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
finish();
return;
//finishActivity(Activity.RESULT_OK);
}
}
catch (Exception ex)
{
MessageBox.Show(context, ex.getMessage());
}
// verificationSuccess(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//Log.v("Success", "Error: " + error.networkResponse.statusCode);
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
MessageBox.Show(PhoneVerificationActivity.this, "Error: " + error.toString());
AppController.getInstance().getRequestQueue().cancelAll("tag_json_obj";
}
pDialog.dismiss();
//verificationFailed(error);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map headers = new HashMap();
if (!Preference.getInstance().getCookie().equals("")
headers.put("Cookie", Preference.getInstance().getCookie());
return headers;
}
/*@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
Map headers = response.headers;
String cookie = headers.get("Set-Cookie".toString();
Preference.getInstance().saveCookie(cookie);
// MyApp.get().checkSessionCookie(response.headers);
Log.v("Success", "Response"+response.headers.toString());
return super.parseNetworkResponse(response);
}*/
};
AppController.getInstance().addToRequestQueue(myRequest, "tag_json_obj";
}
Ответы
Ответ 1
Попытайтесь создать метод в своей Activity
, который вызовет finish()
. Затем вызовите этот метод изнутри onResponse()
.
Что-то вроде:
private void killActivity() {
finish();
}
И тогда назовите это здесь:
if(Boolean.parseBoolean(Flag)) {
Intent intent=new Intent(PhoneVerificationActivity.this,ConfirmSms.class);
intent.putExtra("PhoneNumber", Phone);
startActivity(intent);
killActivity(); // Here.
}
Ответ 2
Проверьте в своем коде следующее:
1. Правильно ли вы проводите деятельность?
Public class YourActivity extends Activity{
}
2.если вы правильно выполняете действия, Finish() будет работать правильно.
YourActivity.this.finish();
3.если вы используете Dialogs, вы должны отклонить Dialog до завершения операции
Dialog.dismiss();
Надежда может быть полезной.
Счастливое кодирование :)
Ответ 3
Если вы переносите большие данные в результат намерения, он может не завершить работу. например, когда я помещаю массив байтов на изображение большого размера, финиш не работает, когда я изменяю размер изображения, тот же код работает.