bundle
একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন একটি কি ? কখন এটি ব্যবহার করবেন?
bundle
একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন একটি কি ? কখন এটি ব্যবহার করবেন?
উত্তর:
বিভিন্ন অ্যান্ড্রয়েড ক্রিয়াকলাপের মধ্যে ডেটা পাস করার জন্য বান্ডিলগুলি সাধারণত ব্যবহৃত হয়। এটি আপনার উপর নির্ভর করে আপনি কী ধরণের মান পাস করতে চান তবে বান্ডিলগুলি সমস্ত ধরণের মান ধরে রাখতে এবং এটিকে নতুন ক্রিয়াকলাপে প্রেরণ করতে পারে।
আপনি এটি এর মতো ব্যবহার করতে পারেন:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
আপনি এইগুলি দ্বারা পাস করা মানগুলি পেতে পারেন:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
আপনি এখানে আরও তথ্য পেতে পারেন:
ক্রিয়াকলাপBundle
এবং Intent
বস্তু ব্যবহার করে ক্রিয়াকলাপের মধ্যে ডেটা পাস করুন ।
আপনার প্রথম কোনও Bundle
বস্তু তৈরি করুন
Bundle b = new Bundle();
তারপরে, anystring
বান্ডেল কী দিয়ে সঞ্চিত স্ট্রিং ডেটা যুক্ত করুন"myname"
b.putString("myname", anystring);
এখন, একটি Intent
অবজেক্ট তৈরি করুন
Intent in = new Intent(getApplicationContext(), secondActivity.class);
b
উদ্দেশ্য হিসাবে বান্ডিল বস্তু পাস
in.putExtras(b);
এবং দ্বিতীয় ক্রিয়াকলাপ শুরু করুন
startActivity(in);
দ্বিতীয় ক্রিয়াকলাপে, আমাদের প্রথম ক্রিয়াকলাপ থেকে পাস করা ডেটা অ্যাক্সেস করতে হবে
Intent in = getIntent();
এখন, আপনাকে বান্ডিল থেকে ডেটা নেওয়া দরকার
Bundle b = in.getExtras();
অবশেষে, নামের কীটির সাথে যুক্ত স্ট্রিং ডেটার মানটি পান "myname"
String s = b.getString("myname");
আমাকে যুক্ত করতে হবে যে ভবিষ্যতে নিজের কাছে ডেটা প্রেরণে ক্রিয়াকলাপ দ্বারা বান্ডিলগুলি ব্যবহার করা হয়।
যখন স্ক্রিনটি ঘোরানো হয়, বা অন্য কোনও ক্রিয়াকলাপ শুরু হয়, তখন পদ্ধতিটি protected void onSaveInstanceState(Bundle outState)
আহ্বান করা হয় এবং ক্রিয়াকলাপটি বিনষ্ট হয়। পরে, ক্রিয়াকলাপের আরেকটি উদাহরণ তৈরি করা হয় এবং public void onCreate(Bundle savedInstanceState)
তাকে ডাকা হয়। ক্রিয়াকলাপের প্রথম উদাহরণটি তৈরি করা হলে, বান্ডিলটি শূন্য হয়; এবং যদি বান্ডিলটি শূন্য না হয় তবে ক্রিয়াকলাপটি তার পূর্বসূর দ্বারা শুরু করা কিছু ব্যবসা অব্যাহত রাখে।
অ্যান্ড্রয়েড স্বয়ংক্রিয়ভাবে পাঠ্য ক্ষেত্রগুলিতে পাঠ্যটি সংরক্ষণ করে, তবে এটি সবকিছু সংরক্ষণ করে না এবং সূক্ষ্ম বাগগুলি মাঝে মাঝে উপস্থিত হয়।
সর্বাধিক সাধারণ অ্যান্টি-প্যাটার্নটি ধরে নিচ্ছে যে onCreate()
এটি কেবল আরম্ভ করে। এটি ভুল, কারণ এটি অবশ্যই রাষ্ট্র পুনরুদ্ধার করতে হবে।
এই "ঘূর্ণায়নের উপর পুনরায় ক্রিয়াকলাপ" আচরণটি অক্ষম করার একটি বিকল্প রয়েছে, তবে এটি পুনরায় আরম্ভ হওয়া বাগগুলি আটকাবে না, এটি কেবল তাদের উল্লেখ করা আরও কঠিন করে তুলবে।
আরও মনে রাখবেন যে ক্রিয়াকলাপটি ধ্বংস হতে চলেছে এমন একমাত্র পদ্ধতি যার কলটি গ্যারান্টিযুক্ত onPause()
। (ডক্সে ক্রিয়াকলাপের জীবনচক্র গ্রাফটি দেখুন See)
এ Bundle
জাভা Map
অবজেক্টের মতো একটি যা String
মানগুলির কীগুলি ম্যাপ করে । এটি ক্রিয়াকলাপ এবং অন্যান্য অ্যাপ্লিকেশন উপাদানগুলির মধ্যে তথ্য পাস করার জন্য ব্যবহৃত হয়। এটি রাষ্ট্রীয় তথ্য ক্যাপচার এবং পুনরুদ্ধার করতে কাঠামোর দ্বারাও ব্যবহৃত হয়।
অ্যান্ড্রয়েড এর জন্য সরল পুরানো Map
অবজেক্টগুলি ব্যবহার না করার কারণ Map
এটি খুব নমনীয়; এটিতে অবজেক্টস থাকতে পারে (যেমন, বলুন, I / O স্ট্রিম) যা সিরিয়ালাইজ করা যায় না। Bundle
এপিআই যে বস্তু এমনভাবে বান্ডিল এর বিষয়বস্তু serializable হতে নিশ্চিত করা হয় একটি বান্ডিল যোগ করা যেতে পারে ধরনের নিষিদ্ধ। অ্যান্ড্রয়েড কাঠামো এই সম্পত্তি উপর নির্ভর করে।
আমি পরামর্শ দিচ্ছি যে আপনি অ্যাপ্লিকেশন ফান্ডামেন্টালগুলিতে ডকুমেন্টেশনটি পড়ুন । এটি ব্যাখ্যা করে, অন্যান্য জিনিসগুলির মধ্যে, কী কী বান্ডিল এবং উদ্দেশ্যগুলি এবং সেগুলি কী জন্য ব্যবহৃত হয়।
বান্ডিলগুলি ইন্টারেন্টের মাধ্যমে এক ক্রিয়াকলাপ থেকে অন্য ক্রিয়াকলাপে স্বেচ্ছাসেবক ডেটা প্রেরণ করতে ব্যবহৃত হতে পারে। আপনি যখন কোনও উদ্বেগ প্রচার করবেন তখন আগ্রহী ক্রিয়াকলাপগুলি (এবং অন্যান্য ব্রডকাস্টআরসিভার্স) এ সম্পর্কে অবহিত হবে। কোনও অভিপ্রায় একটি বান্ডিল থাকতে পারে যাতে আপনি ইন্টেন্টের সাথে অতিরিক্ত ডেটা প্রেরণ করতে পারেন।
বান্ডিলগুলি কী-মানযুক্ত ম্যাপিংস, সুতরাং কোনও উপায়ে তারা হ্যাশের মতো হয় তবে সেগুলি কেবল একটি স্ট্রিং / ফু ফু অবজেক্ট ম্যাপিংয়ের মধ্যে সীমাবদ্ধ নয়। মনে রাখবেন যে কেবলমাত্র নির্দিষ্ট ডেটা ধরণেরগুলি "পার্সেলেবল" হিসাবে বিবেচিত হয় এবং সেগুলি স্পষ্টভাবে বান্ডেল এপিআইতে বর্ণিত।
শুধু একটি বান্ডিল তৈরি করুন,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
"এই_এই_এই_পঞ্জি_ক্লাস.ক্লাস" এ
আপনি এই জাতীয় আইটেম পুনরুদ্ধার করতে পারেন।
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
বান্ডিল: - স্ট্রিং মানগুলি থেকে বিভিন্ন পার্সেলেবল প্রকারে ম্যাপিং।
বান্ডিলটি সাধারণত অ্যান্ড্রয়েডের বিভিন্ন ক্রিয়াকলাপের মধ্যে ডেটা পাস করার জন্য ব্যবহৃত হয়।
যখন আমরা অনপেজ () এর পরে কল করি তখন অনস্টপ () এবং তারপরে অনপস () থেকে অনপস () এ বিপরীত ক্রমে।
পূর্ববর্তী অবস্থাটি পুনরুদ্ধার করতে সিস্টেমটি যে সংরক্ষিত ডেটা ব্যবহার করে সেগুলিকে "ইনস্ট্যান্স স্টেট" বলা হয় এবং এটি একটি বান্ডিল অবজেক্টে সঞ্চিত কী-মান সংযোজনগুলির সংগ্রহ।
বান্ডেলটি ক্রিয়াকলাপগুলির মধ্যে ডেটা ভাগ করতে এবং অনক্রিয়েট () পদ্ধতিতে অ্যাপের অবস্থা বাঁচাতে ব্যবহার করা হয় যাতে অ্যাপটি কোথায় তা বন্ধ হয়ে গেছে তা জানতে পারে ... আমি আশা করি এটি সহায়তা করে :)
বান্ডিল ব্যবহার ইন্টেন্ট অবজেক্টের সাহায্যে এক ক্রিয়াকলাপ থেকে অন্য ক্রিয়াকলাপে ডেটা প্রেরণ করে; যে কোনও ধরণের হতে পারে এমন ডেটা বান্ডিল ধারণ করে।
এখন আমি বলি যে কীভাবে দুটি ক্রিয়াকলাপের মধ্যে বান্ডেল পাসিং ডেটা তৈরি করবেন।
পদক্ষেপ 1: প্রথম ক্রিয়াকলাপে
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
পদক্ষেপ 2: দ্বিতীয় ক্রিয়াকলাপে
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
আমি মনে করি এটি আপনার জন্য দরকারী ...........
বান্ডেলটি কেবলমাত্র দুটি পৃথক উপাদানগুলির মধ্যে ডেটা স্থানান্তর করার জন্য নয় তত বেশি গুরুত্বপূর্ণ এটি ক্রিয়াকলাপটিকে নতুন ক্রিয়াকলাপে ধ্বংস করার আগে সঞ্চিত মান পুনরুদ্ধার করতে ব্যবহৃত হয়।
যেমন একটি EditText
উইজেটের পাঠ্য বা এ এর স্ক্রোল অবস্থান ListView
।
প্রথম ক্রিয়াকলাপ:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
দ্বিতীয় ক্রিয়াকলাপ:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");