मेरे पास दो गतिविधियां हैं, एक UserActivity
है और दूसरा CartActivity
है UserActivity
में उत्पादों की एक सूची दिखा रहा हूं। एक बटन AddtoCart
बटन पर क्लिक करके मैं कार्ट में उत्पादों को जोड़ रहा हूं। मुझे इस समस्या का सामना करना पड़ रहा है:हटाने के बाद बैक बटन दबाकर कार्ट गिनती को अपडेट करना
जब मैं बटन AddtoCart
पर क्लिक करता हूं तो एक्शन बार में एक कार्ट आइकन होता है और मेरे पास उस कार्ट आइकन पर कार्ट काउंटर दिखाते हुए textview
का कस्टम लेआउट होता है। जब भी मैं AddtoCart
बटन पर क्लिक करता हूं तो वह काउंटर अपडेट। अब मैं CartActivity
पर जाता हूं और कार्ट से कुछ उत्पादों को हटा देता हूं। जब मैं UserActivity
पर वापस लौटने के लिए वापस बटन दबाता हूं, तो काउंटर टेक्स्ट व्यू अपडेट नहीं होता है।
मैंने Back button and refreshing previous activity पर दिए गए प्रश्न के अनुसार वापस दबाने पर अपडेट करने के कुछ तरीकों को पढ़ा है। उत्तर में दी गई दो विधियां OnResume()
UserActivity
की विधि को ओवरराइड करके या परिणाम के लिए गतिविधि शुरू कर रही हैं।
मुझे लगता है मैं जब मैं वापस जाएं बटन दबाएं UserActivity
को CartActivity
से एक चर DeleteCounter
कहा जाता गुजरती हैं और काउंटर TextView
में उत्पादों की मूल संख्या से घटा दें और पाठ दृश्य को अपडेट करने की जरूरत है लगता है।
यहां UserActivity
का आंशिक कोड है और मेरे पास इस कोड में केवल कार्ट काउंटर को अपडेट करने का कार्य है जिसे मैं बटन पर क्लिक करता हूं। इसके अलावा onActivityResult()
का कोड जिसमें मैंने उपरोक्त दिए गए SO प्रश्न लिंक के उत्तर से कोशिश की थी। यह पता काम नहीं कर रहा:
public class CartActivity extends AppCompatActivity {
private List<Product> mCartList;
private ProductAdapter mProductAdapter;
private static List<Product> cart;
private static Integer deletecounter= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mCartList = getCart();
Intent intent = getIntent();
String ProductTitle = intent.getStringExtra("ProductTitle");
String ProductUrl = intent.getStringExtra("ProductUrl");
String ProductPrice = intent.getStringExtra("ProductPrice");
String BargainPrice = intent.getStringExtra("BargainPrice");
Product product = new Product(ProductTitle, ProductUrl, ProductPrice, BargainPrice);
mCartList.add(product);
// Make sure to clear the selections
for (int i = 0; i < mCartList.size(); i++) {
mCartList.get(i).selected = false;
}
// Create the list
final ListView listViewCatalog = (ListView) findViewById(R.id.cart_list_view);
mProductAdapter = new ProductAdapter(mCartList, getLayoutInflater(), true, CartActivity.this);
listViewCatalog.setAdapter(mProductAdapter);
listViewCatalog.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Product selectedProduct = mCartList.get(position);
if (selectedProduct.selected)
selectedProduct.selected = false;
else
selectedProduct.selected = true;
mProductAdapter.notifyDataSetInvalidated();
}
});
FloatingActionButton Delete = (FloatingActionButton) findViewById(R.id.fab);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Loop through and remove all the products that are selected
// Loop backwards so that the remove works correctly
for (int i = mCartList.size() - 1; i >= 0; i--) {
if (mCartList.get(i).selected) {
mCartList.remove(i);
deletecounter++;
}
}
// THIS IS THE CODE I USED TO RETURN DATA TO PREVIOUS ACTIVITY BUT UserActivity STARTS AUTOMATICALLY AFTER DELETION OF SELECTED PRODUCTS AS SOON AS I CLICK THE DELETE BUTTON EVEN WHEN THERE ARE PRODUCTS IN THE CART.
// if(deletecounter!=0) {
// Intent i = new Intent(HawkActivity.this, UserActivity.class);
// startActivityForResult(i, 1);
// Intent returnIntent = new Intent();
// returnIntent.putExtra("DeleteCounter", deletecounter);
// setResult(RESULT_OK, returnIntent);
// }
mProductAdapter.notifyDataSetChanged();
Snackbar.make(view,"Selected items deleted successfully",Snackbar.LENGTH_SHORT).show();
}
}
);
}
public static List<Product> getCart() {
if(cart == null) {
cart = new Vector<Product>();
}
return cart;
}
}
जब मैं कोड है जो दोनों गतिविधियों में बाहर टिप्पणी की है का उपयोग परिणाम विधि के लिए शुरू गतिविधि का उपयोग यानी, ऐसा होता है:
public class UserActivity extends AppCompatActivity{
private int cartindex = 0;
private TextView counterTV = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
// @Override
// protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if (requestCode == 1) {
//
// if(resultCode == RESULT_OK){
// Intent intent = getIntent();
// Integer deletecounter = intent.getIntExtra("DeleteCounter",0);
// if(deletecounter>0){
// UpdateCartCount(Integer.parseInt(counterTV.getText().toString())-deletecounter);
// }
// }
// }
// }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.user, menu);
final View menu_list = menu.findItem(R.id.action_hawk).getActionView();
counterTV = (TextView) menu_list.findViewById(R.id.cartcounter);
UpdateCartCount(cartindex);
new MyMenuItemStuffListener(menu_hotlist, "Show message") {
@Override
public void onClick(View v) {
Intent intent= new Intent(UserActivity.this,CartActivity.class);
intent.putExtra("ProductTitle",pname);
intent.putExtra("ProductUrl",purl);
intent.putExtra("ProductPrice",pprice);
intent.putExtra("BargainPrice",bargainprice);
UserActivity.this.startActivity(intent);
}
};
return true;
}
//Function to update cart count
public void UpdateCartCount(final int new_number) {
cartindex = new_number;
if (counterTV == null) return;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (new_number == 0)
counterTV.setVisibility(View.INVISIBLE);
else {
counterTV.setVisibility(View.VISIBLE);
counterTV.setText(Integer.toString(new_number));
}
}
});
}
यहाँ CartActivity
का कोड है : जब मैं हटाएं बटन पर क्लिक करता हूं, तो आइटम हटा दिए जाते हैं लेकिन CartActivity
स्वचालित रूप से बंद हो जाता है। काउंटर टेक्स्ट व्यू के साथ UserActivity
कार्ट में उत्पाद होने पर भी '0' मान दिखाया गया है।
मुझे कोड से आपको आवश्यक किसी भी अन्य जानकारी के बारे में बताएं। CartActivity
में कुछ आइटमों को हटाने के बाद बैक बटन दबाए जाने पर कार्ट काउंटर को अपडेट करने के लिए मैं किसी भी अन्य तरीके का उपयोग कर सकता हूं। किसी भी मदद की सराहना की है।
नहीं है, अभी भी काम नहीं:
अपने UserActivity कोड की तरह होना चाहिए। समस्या यह है कि जब मैं डिलीट बटन दबाता हूं, तो चयनित उत्पाद हटा दिए जाते हैं और 'कार्टएक्टिविटी' स्वयं खत्म हो जाती है, भले ही उत्पाद कार्ट में मौजूद हों और 'उपयोगकर्ता एक्टिविटी' कार्ट में शून्य काउंटर के साथ दिखाई दे। जब मैं हटाएं क्लिक करता हूं तो मैं 'UserActivity' को बिल्कुल प्रकट नहीं करना चाहता! यदि मैं गाड़ी की अद्यतन गिनती के साथ दिखाना चाहिए तो उससे पीछे दबाएं। – brainbreaker
अगर कार्टेटिविटी –
में (mcartList.size() == 0) के साथ (deletecounterLize.size() == 0) स्थिति को प्रतिस्थापित करें, तो उपयोगकर्ता एक्टिविटी को हटाया जाता है जब आइटम हटा दिया जाता है जो स्थिति हटाए जाने वाले को संतुष्ट करता है!= 0 और अगर 0 0 या 0 नहीं तो सरणीसूची के आकार की जांच करने के लिए इरादा इतना बेहतर निकाल दिया गया है, तो केवल प्रयोक्ता सक्रियता का इरादा निकाल दिया जाना चाहिए –