दिलचस्प पोस्ट
JMF का उपयोग करते हुए वीडियो कैप्चर कैसे करें, लेकिन जेएमएफ को स्थापित किए बिना मैं एएसपी.नेट एमवीसी में लोअरकेस मार्ग कैसे कर सकता हूं? लिपियों के साथ लिनक्स में स्टैक साइज़ बढ़ाएं पता लगाएं कि उपयोगकर्ता के रास्ते में उसमें एक विशिष्ट निर्देशिका है पायथन कोड ओब्बुस्केक्शन इंटरनेट एक्सप्लोरर को सूचक-घटनाओं का अनुकरण कैसे करें: कोई नहीं? टैग को अनदेखा करने में HTML में पूर्ण पाठ खोज / & एक सूची से आसन्न डुप्लिकेट तत्वों को हटा दें डॉकर छवि बनाम कंटेनर ब्राउज़रों कैश HTTP 301s कब तक कर रहे हैं? PHP और MySQL: mysqli_num_rows () पैरामीटर 1 mysqli_result होने की उम्मीद है, बूलीयन दिया HTTP स्थिति कोड 0 – यह लाने के लिए क्या मतलब है, या XMLHttpRequest? सी ++ 03 में 'ऑटो' कीवर्ड का उपयोग करने के लिए कोई कारण है? STD :: स्ट्रिंग कैसे लागू है? एंड्रॉइड और थ्रेड और कॉलबैक हैंडलिंग में लाइव ऑडियो रिकॉर्डिंग और बजाना

एंड्रॉइड में आशय का उपयोग करने के लिए ऑरेक्ट्स की अर्रे सूची को एक से दूसरे गतिविधि से कैसे निकालना है?

मेरे पास onClick() विधि में कोड में निम्नलिखित है I

  List<Question> mQuestionsList = QuestionBank.getQuestions(); 

अब इस रेखा के बाद मेरा इरादा है, इस प्रकार है:

  Intent resultIntent = new Intent(this, ResultActivity.class); resultIntent.putParcelableArrayListExtra("QuestionsExtra", (ArrayList<? extends Parcelable>) mQuestionsList); startActivity(resultIntent); 

मैं नहीं जानता कि यह प्रश्न सूचियों को एक गतिविधि से दूसरे गतिविधि पर ले जाने के लिए कैसे करें मेरा प्रश्न वर्ग

 public class Question { private int[] operands; private int[] choices; private int userAnswerIndex; public Question(int[] operands, int[] choices) { this.operands = operands; this.choices = choices; this.userAnswerIndex = -1; } public int[] getChoices() { return choices; } public void setChoices(int[] choices) { this.choices = choices; } public int[] getOperands() { return operands; } public void setOperands(int[] operands) { this.operands = operands; } public int getUserAnswerIndex() { return userAnswerIndex; } public void setUserAnswerIndex(int userAnswerIndex) { this.userAnswerIndex = userAnswerIndex; } public int getAnswer() { int answer = 0; for (int operand : operands) { answer += operand; } return answer; } public boolean isCorrect() { return getAnswer() == choices[this.userAnswerIndex]; } public boolean hasAnswered() { return userAnswerIndex != -1; } @Override public String toString() { StringBuilder builder = new StringBuilder(); // Question builder.append("Question: "); for(int operand : operands) { builder.append(String.format("%d ", operand)); } builder.append(System.getProperty("line.separator")); // Choices int answer = getAnswer(); for (int choice : choices) { if (choice == answer) { builder.append(String.format("%d (A) ", choice)); } else { builder.append(String.format("%d ", choice)); } } return builder.toString(); } } 

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड में आशय का उपयोग करने के लिए ऑरेक्ट्स की अर्रे सूची को एक से दूसरे गतिविधि से कैसे निकालना है?"

गतिविधि के बीच: मेरे लिए काम किया

 ArrayList<Object> object = new ArrayList<Object>(); Intent intent = new Intent(Current.class, Transfer.class); Bundle args = new Bundle(); args.putSerializable("ARRAYLIST",(Serializable)object); intent.putExtra("BUNDLE",args); startActivity(intent); 

ट्रांसफर। क्लास में

 Intent intent = getIntent(); Bundle args = intent.getBundleExtra("BUNDLE"); ArrayList<Object> object = (ArrayList<Object>) args.getSerializable("ARRAYLIST"); 

आशा है कि यह सहायता किसी के पास है

गतिविधि के बीच डेटा पास करने के लिए पार्सलेबल का उपयोग करना

यह आमतौर पर काम करता है जब आपने डेटामोडल बना दिया हो

उदाहरण के लिए मान लें कि हमारे पास एक प्रकार का जेसन है

 { "bird": [{ "id": 1, "name": "Chicken" }, { "id": 2, "name": "Eagle" }] } 

यहां पक्षी एक सूची है और इसमें दो तत्व हैं

हम jsonschema2pojo का उपयोग करके मॉडल बना देंगे

अब हमारे पास मॉडल क्लास नाम बर्ड मोडेल है और बर्ड बर्ड मोडेल में बर्ड और बर्ड की सूची शामिल है जिसमें नाम और आईडी शामिल हैं I

पक्षी वर्ग पर जाएं और इंटरफेस " पार्सलेट योग्य " लागू करें

Alt + Enter द्वारा एंड्रॉइड स्टूडियो में ओप्लेमेट विधि जोड़ें

नोट: एक संवाद बॉक्स कहता दिखाई देगा औजार विधि जोड़ें दबाएं दर्ज करें

Alt + Enter दबाकर पार्सलेबल कार्यान्वयन जोड़ें

नोट: एक डायलॉग बॉक्स पार्सल योग्य कार्यान्वयन कह रहा दिखाई देगा और फिर से दर्ज करें

अब यह इरादे से गुजारें

 List<Bird> birds = birdModel.getBird(); Intent intent = new Intent(Current.this, Transfer.class); Bundle bundle = new Bundle(); bundle.putParcelableArrayList("Birds", birds); intent.putExtras(bundle); startActivity(intent); 

और क्रिएट पर स्थानांतरण गतिविधि पर

 List<Bird> challenge = this.getIntent().getExtras().getParcelableArrayList("Birds"); 

धन्यवाद

अगर कोई समस्या है तो कृपया मुझे बताएं

यह अच्छा काम करता है,

 public class Question implements Serializable { private int[] operands; private int[] choices; private int userAnswerIndex; public Question(int[] operands, int[] choices) { this.operands = operands; this.choices = choices; this.userAnswerIndex = -1; } public int[] getChoices() { return choices; } public void setChoices(int[] choices) { this.choices = choices; } public int[] getOperands() { return operands; } public void setOperands(int[] operands) { this.operands = operands; } public int getUserAnswerIndex() { return userAnswerIndex; } public void setUserAnswerIndex(int userAnswerIndex) { this.userAnswerIndex = userAnswerIndex; } public int getAnswer() { int answer = 0; for (int operand : operands) { answer += operand; } return answer; } public boolean isCorrect() { return getAnswer() == choices[this.userAnswerIndex]; } public boolean hasAnswered() { return userAnswerIndex != -1; } @Override public String toString() { StringBuilder builder = new StringBuilder(); // Question builder.append("Question: "); for(int operand : operands) { builder.append(String.format("%d ", operand)); } builder.append(System.getProperty("line.separator")); // Choices int answer = getAnswer(); for (int choice : choices) { if (choice == answer) { builder.append(String.format("%d (A) ", choice)); } else { builder.append(String.format("%d ", choice)); } } return builder.toString(); } } 

अपने स्रोत गतिविधि में, इसका उपयोग करें:

  List<Question> mQuestionList = new ArrayList<Question>; mQuestionsList = QuestionBank.getQuestions(); mQuestionList.add(new Question(ops1, choices1)); Intent intent = new Intent(SourceActivity.this, TargetActivity.class); intent.putExtra("QuestionListExtra", ArrayList<Question>mQuestionList); 

अपने लक्ष्य गतिविधि में, इसका उपयोग करें:

  List<Question> questions = new ArrayList<Question>(); questions = (ArrayList<Question>)getIntent().getSerializableExtra("QuestionListExtra"); 

कदम:

  1. अपने ऑब्जेक्ट क्लास को सीरियलाइज करने योग्य बना देता है

     public class Question implements Serializable` 
  2. इसे अपने स्रोत गतिविधि में रखें

     ArrayList<Question> mQuestionList = new ArrayList<Question>; mQuestionsList = QuestionBank.getQuestions(); mQuestionList.add(new Question(ops1, choices1)); Intent intent = new Intent(SourceActivity.this, TargetActivity.class); intent.putExtra("QuestionListExtra", mQuestionList); 
  3. इसे अपने लक्ष्य गतिविधि में रखें

      ArrayList<Question> questions = new ArrayList<Question>(); questions = (ArrayList<Questions>) getIntent().getSerializableExtra("QuestionListExtra"); 

अपने ऑब्जेक्ट पार्सलेबल के माध्यम से पास करें और आप शुरू करने के लिए यहां एक अच्छा ट्यूटोरियल है।
पहले प्रश्न इस तरह पार्सलाबल लागू करना चाहिए और उन पंक्तियों को जोड़ना चाहिए:

 public class Question implements Parcelable{ public Question(Parcel in) { // put your data using = in.readString(); this.operands = in.readString();; this.choices = in.readString();; this.userAnswerIndex = in.readString();; } public Question() { } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(operands); dest.writeString(choices); dest.writeString(userAnswerIndex); } public static final Parcelable.Creator<Question> CREATOR = new Parcelable.Creator<Question>() { @Override public Question[] newArray(int size) { return new Question[size]; } @Override public Question createFromParcel(Parcel source) { return new Question(source); } }; } 

फिर अपना डेटा इस तरह से पास करें:

 Question question = new Question(); // put your data Intent resultIntent = new Intent(this, ResultActivity.class); resultIntent.putExtra("QuestionsExtra", question); startActivity(resultIntent); 

और इस तरह अपना डेटा प्राप्त करें:

 Question question = new Question(); Bundle extras = getIntent().getExtras(); if(extras != null){ question = extras.getParcelable("QuestionsExtra"); } 

इससे चल जाएगा!

यदि आपके क्लास प्रश्न में केवल प्राथमिकताएं , सीरियलाइजबल या स्ट्रिंग फ़ील्ड हैं तो आप उन्हें सीरियलिज़ेबल लागू कर सकते हैं। ArrayList सीरियलज़ेबल को कार्यान्वित करता है, यही कारण है कि आप इसे बंडल की तरह रख सकते हैं। इनपुट सेरिअलजेज (कुंजी, मान) और इसे किसी अन्य गतिविधि पर भेज सकते हैं। आईएमएचओ, पार्सलेबल – यह बहुत लंबा रास्ता है

मैं इस परिदृश्य में दो चीजों में से एक करता हूं

  1. मेरी ऑब्जेक्ट के लिए एक सीरियलाइज / डिसेराइलाइज सिस्टम लागू करें और उन्हें स्ट्रिंग्स के रूप में पास करें (सामान्य रूप से जेएसएएन प्रारूप में, लेकिन आप उन्हें किसी भी तरह से सीरियल कर सकते हैं)

  2. एक कंटेनर लागू करें जो गतिविधियों के बाहर रहता है ताकि मेरी सारी गतिविधियां इस कंटेनर को पढ़ और लिख सकें। आप इस कंटेनर को स्थिर कर सकते हैं या प्रत्येक गतिविधि में समान उदाहरण प्राप्त करने के लिए किसी प्रकार की निर्भरता इंजेक्शन का उपयोग कर सकते हैं।

पार्सलेबल केवल ठीक काम करता है, लेकिन मैं हमेशा इसे एक बदसूरत दिखने वाला पैटर्न मानता हूं और वास्तव में किसी भी मूल्य को जोड़ नहीं करता जो कि वहां नहीं है यदि आप मॉडल के बाहर अपना सीरियलाइजेशन कोड लिखते हैं।

आपका इरादा निर्माण सही लगता है यदि आपका Question Parcelable लागू Parcelable

अगली गतिविधि में आप इस तरह से अपने प्रश्नों की सूची पुनः प्राप्त कर सकते हैं:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(getIntent() != null && getIntent().hasExtra("QuestionsExtra")) { List<Question> mQuestionsList = getIntent().getParcelableArrayListExtra("QuestionsExtra"); } } 

आप आशय के साथ बंडल का उपयोग करके सरणी सूची को एक गतिविधि से दूसरे पास कर सकते हैं। नीचे दिए गए कोड का उपयोग करें यह सरणी सूची को पार करने का सबसे छोटा और सबसे उपयुक्त तरीका है

bundle.putStringArrayList ( "कीवर्ड", ArrayList);

आपको पार्सलेट योग्य इंटरफ़ेस भी कार्यान्वित करने की आवश्यकता होनी चाहिए और सीरियलजएबल के अतिरिक्त कंसट्रक्टर में पार्सल तर्क के साथ अपने प्रश्न वर्ग में writeToParcel विधि को जोड़ना होगा। अन्यथा एप क्रैश हो जाएगा

नीचे कोड का उपयोग करना;

 private ArrayList<AssignListPojo.AssignListObj> mDataset; 

अपने मॉडल वर्ग को Serializable करने योग्य बनाएं और नीचे दिए गए कोड का उपयोग करके अपनी सरणी को पास करें;

 intent.putExtra("StringKey",mDataset); 

और कोड के नीचे का उपयोग कर एक अन्य गतिविधि में यह सरणी सूची प्राप्त करें;

 ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("StringKey"); 

मेरे पास सटीक एक ही सवाल था और अभी भी Parcelable साथ परेशानी करते हुए मुझे पता चला कि स्थिर चर कार्य के लिए इतने खराब विचार नहीं हैं

आप बस एक बना सकते हैं

 public static ArrayList<Parliament> myObjects = .. 

और इसे MyRefActivity.myObjects माध्यम से कहीं और का उपयोग करें

मुझे यकीन नहीं था कि सार्वजनिक स्थैतिक वैरिएबल गतिविधियों के साथ एक आवेदन के संदर्भ में क्या दर्शाता है। यदि आपको या तो इस दृष्टिकोण के प्रदर्शन पहलुओं या इसके बारे में संदेह है, तो देखें:

  • गतिविधियों के बीच डेटा साझा करने का सबसे अच्छा तरीका क्या है?
  • Android में स्थिर चर का उपयोग करना

चीयर्स।