在对其他类

时间:2016-10-27 10:19:17

标签: android

我正在研究目录项目。用于列出产品的MainActivity和用于查看或编辑产品的ViewProductActivity。在ViewProductActivity中有“取消”按钮,只需关闭ViewProductActivity然后返回MainActivity,还有“删除”选项菜单从数据库中删除我的产品。如果我单击取消按钮它没有问题,并调用MainActivity的onResume方法。但是当我点击“拒绝”选项菜单后,在删除过程后,应用程序将返回到MainActivity。但问题是MainActivity的onResume根本没有被调用。我确保它使用Log。

我看了this和其他威胁,但没有得到答案 这是代码的一部分。

MainActivity的

@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);
}

2 个答案:

答案 0 :(得分:0)

您应该在ViewProductActivity类中尝试此代码: -

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

答案 1 :(得分:0)

您是否在onResume()中调用了super.onResume()

下面给出了处理 onResume 的正确方法

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