অ্যান্ড্রয়েড স্টুডিওতে কীভাবে অন্য ক্রিয়াকলাপে কোনও পদ্ধতি কল করা যায়


উত্তর 1:

আপনি যদি এমন কিছু উল্লেখ করছেন:

নতুন মেইনএকটিভিটি ()। doMyMethod ();

তাহলে এটি সম্ভব নয়।

আসল উত্তরটি আপনি কী অর্জন করতে চাইছেন তার উপর সম্পূর্ণ নির্ভর করে depends এটি হতে পারে যে উত্তরের সাথে আপনার ক্রিয়াকলাপের জন্য অন্য শ্রেণীর কাছে কোনও রেফারেন্স পাঠানো, বা একটি ইন্টারফেস ব্যবহার করা, বা লোকালব্রোডকাস্টম্যানেজারের মতো ইভেন্টবাস ব্যবহার করা বা কোনও উদ্দীপনা এবং নতুন কিছু ক্রিয়াকলাপ দিয়ে একটি নতুন ক্রিয়াকলাপ শুরু করা তার "অতিরিক্তগুলি" বান্ডেলটিতে প্রবেশ করা, বা সম্পূর্ণ অন্য কিছু।

আপনার প্রশ্নের বিবরণে আপনি কী অর্জন করতে চাইছেন সে সম্পর্কে আরও তথ্য যুক্ত করা সহায়তা করবে।

সম্পাদনা করুন:

এখন যেহেতু আমি বুঝতে পেরেছি উদ্দেশ্যটি হল একটি ব্রডকাস্ট্রিসিভারের ক্রিয়াকলাপে কোনও পদ্ধতি কল করা, আমি ব্যাখ্যা করতে পারি যে এই পরিস্থিতিতে আমি কীভাবে একটি ইন্টারফেস প্রায় ব্যবহার করি। এখানে এই কাজের উদাহরণ:

প্রথমে, আপনার ব্রডকাস্টার্সিভার থেকে আপনি যে ডেটা প্রেরণ করতে চান তা প্রেরণ করতে একটি ইন্টারফেস তৈরি করুন। এখানে, উদাহরণস্বরূপ, এটি হ'ল অনস্যাম্পলরেডিলিস্টনার

সর্বজনীন চূড়ান্ত শ্রেণির নমুনা গ্রহণকারী সম্প্রচারিত করে সম্প্রচারক cast পাবলিক স্ট্যাটিক ফাইনাল স্ট্রিং SAMPLE_DATA_EXTRA = "নমুনা_আক্ষেত্র"; বেসরকারী OnSampleReadyListener mListener; @ সাপ্রেস ওয়ার্নিংস ("অব্যবহৃত") সর্বজনীন নমুনা গ্রহণকারী () {} সর্বজনীন স্যাম্পল রিসিভার (অনস্যাম্পলরেডি লিস্টনার শ্রোতা) { mListener = শ্রোতা; } @অগ্রাহ্য করা সর্বজনীন শূন্য অন রিসিভ (প্রসঙ্গ প্রসঙ্গে, অভিপ্রায় উদ্দেশ্য) { চূড়ান্ত স্ট্রিং someExampleData = intent.getStringExtra (SAMPLE_DATA_EXTRA); mListener.onSampleDataReady (someExampleData); } সর্বজনীন ইন্টারফেস অনস্যাম্পলরেডিলিস্টনার { অকার্যকর onSampleDataReady (স্ট্রিং কিছু উদাহরণস্বরূপ); }}

তারপরে, অনস্যাম্পলরেডিলিস্টনার উদাহরণটি পাস করার জন্য আপনার ক্রিয়াকলাপ শ্রেণি সেট আপ করুন এবং সম্প্রচারের জন্য শোনার জন্য আপনার ক্রিয়াকলাপটি সেট করুন:

সার্বজনীন শ্রেণীর মেইনএকটিভিটি অ্যাপসম্প্যাটএটিভিটি বর্ধিত করে OnSampleReadyListener ments প্রাইভেট স্যাম্পল রিসিভার এমরসিভার; @অগ্রাহ্য করা সুরক্ষিত অকার্যকর অনক্রিট (@ ন্যারেবল বান্ডেল সেভড ইনস্ট্যান্সস্টেট) { সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); // শ্রোতার একটি উদাহরণ আপনার প্রাপকের কাছে পাস করুন ... mReceiver = নতুন স্যাম্পলরসিভার (এটি); }//..আপনার সম্প্রচারক রিসিভারটি শুনতে আপনার ক্রিয়াকলাপটি সেট করুন ... // প্রাপ্ত সম্প্রচার সম্পর্কিত যে কোনও যুক্তি এখানে চালান @অগ্রাহ্য করা স্যাম্পলডাটাআরডি প্রকাশ্যে শুল্ক (কিছু স্ট্যাম্পল ডেটা স্ট্রিং) লগ.ডি ("TAG", "ডেটা প্রাপ্ত হয়েছে:" + কিছু উদাহরণস্বরূপ); }}

উত্তর 2:

1.Menactivity প্রধান = নতুন প্রধান কার্যকলাপ ()

মেইন.ডোসোম ওয়ার্ক ():

এইভাবে আপনি কেবল এটিকে (নতুন) ক্রিয়াকলাপের কল করতে পারেন। এটি ক্লাসগুলির জন্য কাজ করে তবে ক্রিয়াকলাপের দৃশ্যে আমরা মেইনাকটিভিটির বর্তমান উদাহরণ চাই (এখনই একটি পাঠ্যদর্শনটির মতো স্ক্রিনের কিছু)

২. আপনি মেইন্যাকটিভিটির উদাহরণটি অন্য শ্রেণীর কাছে এবং কল কল করতে পারেন do ওয়ার্ক, ()

এটি পরামর্শ দেওয়া হয়নি কারণ আপনি একটি প্রসঙ্গটি পাস করবেন এবং যখন প্রয়োজন হবে না তখন এটি জীবিত রাখতে পারেন।

৩. আপনি মেইন্যাকটিভিটিতে একটি স্ট্যাটিক পদ্ধতি তৈরি করতে পারেন এবং মেইনএকটিভিটি.ডোসোম ওয়ার্ক () কল করতে পারেন। আপনার পদ্ধতিতে অন্যান্য অ স্থিতিশীল স্টাফ অ্যাক্সেস থাকবে না।

৪. আপনি মূল সক্রিয়তায় ইন্টারফেস প্রয়োগ করতে এবং এটিকে শ্রেণিতে পাস করতে পারেন। আপনি ইন্টারফেস.ডো.সোম ওয়ার্ককে কল করতে পারেন most বেশিরভাগ পরিস্থিতিতে যাওয়ার এটিই সেরা উপায়।

৫. মেন্যাকটিটিটি সিঙ্গলটন হিসাবে তৈরি করুন এবং মেইনএকটিভিটি.জেটআইনস্ট্যান্স () ডোজসোম ওয়ার্ক () কল করুন এটি নিয়ামক শ্রেণীর জন্য ভাল কাজ করে।

Broadcast. সম্প্রচারিত রিসিভার তৈরি করুন, ক্রিয়াকলাপের সাথে নিবন্ধ করুন এবং ক্লাস থেকে কল করুন আপনার প্রাসঙ্গিক প্রয়োজন হবে।

You. আপনি হ্যান্ডলার এবং পাস বার্তা ব্যবহার করেন।

৮. গ্রিনবটের মতো কিছু বার্তা পাঠানো লাইব্রেরি ব্যবহার করুন।


উত্তর 3:

আপনার ক্রিয়াকলাপে একটি সর্বজনীন পদ্ধতি নির্ধারণ করুন:

সর্বজনীন শূন্য ফু () { //জিনিসপত্র}

তারপরে ক্লাসে:

((আপনার কার্যকলাপ) getActivity) .ফু ();

এটি ফ্রেম এবং ডায়ালগফ্রেগমেন্টের মতো ইউআই ক্লাসের জন্য কাজ করে।


উত্তর 4:

কেন পৃথিবীতে আপনি এই জাতীয় কিছু করতে চান, ক্রিয়াকলাপ এবং বিদ্যমানতার খণ্ডন কারণ কেবলমাত্র ইউআই রেন্ডার করা।

সুতরাং বেশিরভাগ ক্ষেত্রে আপনাকে তাদের পদ্ধতিগুলি অ্যাক্সেস করতে হবে না।

আপনার যদি একটি সাধারণ যুক্তি থাকে তবে আপনি ব্যবহার করতে চান, আর্কিটেকচার ডিজাইনের একটি নিদর্শন এমভিপি-এমভিভিএম- ইত্যাদি ব্যবহার করে এটি আলাদা করার চেষ্টা করুন etc


উত্তর 5:

আপনি class শ্রেণীর নির্মাতায় প্রধান ক্রিয়াকলাপটির উদাহরণটি পাস করতে পারেন।

মাইক্লাস (মূল সক্রিয়তা মূলতত্ব,… ..)

{

this.mainactivity = মূল সক্রিয়তা;

}

mainactivity.method ();


উত্তর 6:

অভিপ্রায় উদ্দেশ্য = নতুন উদ্দীপনা (প্রসঙ্গ, টার্গেটএকটিভিটি.ক্লাস);

startActivity (অভিপ্রায়);

দ্রষ্টব্য: পরিস্থিতির ভিত্তিতে 'প্রসঙ্গের' আলাদা মান থাকতে পারে। দয়া করে স্ট্যাকওভারফ্লো