2016-10-27 3 views
-1

Ich arbeite an Katalog-Projekt. MainActivity zum Auflisten von Produkten und ViewProductActivity zum Anzeigen oder Bearbeiten von Produkten. In ViewProductActivity gibt es die Schaltfläche "Cancel", um die ViewProductActivity zu schließen und dann zu MainActivity zurückzukehren. Außerdem gibt es das Optionsmenü "Delete", um mein Produkt aus der Datenbank zu löschen. Wenn ich auf "Abbrechen" klicke, funktioniert das problemlos und die onResume-Methode von MainActivity wird aufgerufen. Aber wenn ich nach dem Löschvorgang auf das Optionsmenü 'delele' klicke, kehrt die App zu MainActivity zurück. Aber das Problem ist MainActivity onResume überhaupt nicht aufgerufen. Ich habe sichergestellt, dass es Log verwendet.onResume nicht nach dem Aufruf von finish() auf andere Aktivität in anderen Klasse

Ich habe mir this und andere Bedrohung, aber nicht die Antwort bekommen Hier ist das Stück des Codes.

MainActivity des

@Override 
protected void onResume() { 
    super.onResume(); 
    Log.i("zihad", "onResume"); 
    if (isInternetAvailable()) { 
     myCatalogData.arrayAdapterAllData(myListAdapter); 
    } else { 
     Toast.makeText(this, "No internet connection", Toast.LENGTH_SHORT).show(); 
    } 
} 

ViewProductActivity

btCancel.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     finish(); 
    } 
}); 

requestQueue = Volley.newRequestQueue(this); 
CatalogDataHelper myCatalogData = new CatalogDataHelper(this, requestQueue); 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == R.id.action_delete) { 
     new AlertDialog.Builder(this) 
       .setTitle("Confirmation") 
       .setMessage("Do you really want to delete this product?") 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         if (isInternetAvailable()) { 
          myCatalogData.deleteProduct(String.valueOf(idProduct)); 
         } else { 
          Toast.makeText(ViewProductActivity.this, "No internet Connection", Toast.LENGTH_SHORT).show(); 
         } 
        }}) 
       .setNegativeButton(android.R.string.no, null) 
       .show(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

CatalogDataHelper

public CatalogDataHelper(final Activity activity, RequestQueue requestQueue) { 
    this.activity = activity; 
    this.requestQueue = requestQueue; 
} 
public void deleteProduct(final String id) { 
    final ProgressDialog progressDialog = ProgressDialog.show(activity, "Deleting product", "Please wait ..."); 
    StringRequest myStringRequest = new StringRequest(Request.Method.POST, MainActivity.URL_SERVER + "/deleteproduct.php", 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String jsonResponse) { 
        progressDialog.dismiss(); 
        try { 
         JSONObject jObject = new JSONObject(jsonResponse); 
         if (jObject.getBoolean("success")) { 
          Toast.makeText(activity, "Product has been deleted", Toast.LENGTH_SHORT).show(); 
          activity.finish(); //close ViewProductActivity and return to MainActivity 
         } 
        } catch (JSONException e) { 
         Toast.makeText(activity, "Server error", Toast.LENGTH_SHORT).show(); 
         e.printStackTrace(); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        progressDialog.dismiss(); 
        show_error(error); 
       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> mapParam = new HashMap<>(); 
      mapParam.put("id", id); 

      return mapParam; 
     } 
    }; 
    requestQueue.add(myStringRequest); 
} 
+0

sind' nicht genannt? können Sie den Code posten .. – ZeroOne

+1

Willkommen bei StackOverflow. Bitte [** LESEN SIE DIESE **] (http://stackoverflow.com/help/how-to-ask) zuerst, bevor Sie sich nach einer Programmierfrage erkundigen. Oder sonst, hoffe nicht, eine richtige Antwort zu bekommen. – poring91

Antwort

0

Sie sollten versuchen t seinen Code in Ihre ViewProductActivity Klasse: -

Intent i = new Intent(ViewProductActivity.this, MainActivity.class); 
startActivity(i); 
ViewProductActivity.this.finish(); 
0

Haben rufen Sie super.onResume() in onResume()?

korrekte Weise können Sie sicher `onResume() zu handhaben onResume ist unten angegeben

@Override 
protected void onResume() { 
    //Your code to finish activity 
    super.onResume(); 
} 
Verwandte Themen