ক্রিয়াকলাপ, অ্যাপকম্প্যাটঅ্যাক্টিভিটি, টুকরা ক্রিয়াকলাপ এবং অ্যাকশনবার অ্যাক্টিভিটি: কখন ব্যবহার করবেন?


266

আমি আইওএস থেকে আসছি যেখানে এটি সহজ এবং আপনি কেবল একটি ইউআইভিউকন্ট্রোলার ব্যবহার করেন। যাইহোক, অ্যান্ড্রয়েডে নির্দিষ্ট API স্তরের জন্য নির্দিষ্ট ইউআইসি কম্পোনেন্ট সহ জিনিসগুলি আরও জটিল মনে হয়। আমি অ্যান্ড্রয়েডের জন্য বিগনার্ডআরঞ্চ পড়ছি (বইটি প্রায় ২ বছরের পুরানো) এবং তারা পরামর্শ দেয় যে আমি Activityআমার হোস্ট করার জন্য ব্যবহার করব FragmentActivities। যাইহোক, আমি মনে করি অবমূল্যায়ন Activityকরা হয়েছে।

সুতরাং এপিআই লেভেল 22 (এপিআই লেভেল 15 বা 16 এর সর্বনিম্ন সমর্থন সহ) এর জন্য, উপাদানগুলি হোস্ট করার জন্য এবং উপাদানগুলির নিজের জন্য আমার ঠিক কী ব্যবহার করা উচিত? এই সবগুলির জন্য কোনও ব্যবহার রয়েছে, বা আমার এক বা দুটি প্রায় একচেটিয়াভাবে ব্যবহার করা উচিত?


1
আপনি FragmentActivityআইস হোস্টিং হবে না । আপনি কেবল Fragmentএস। নতুন অ্যান্ড্রয়েড সংস্করণগুলিতে Activityতাদের সরাসরি হোস্ট করার জন্য ক্লাস নিজেই আপডেট করা হয়েছে। পুরানো সংস্করণ সমর্থন করার জন্য FragmentActivityচালু হয়েছিল।
রবি থাপলিয়াল

5
একইভাবে, এপিআই 11+ আই এর সাথে একটির Activityজন্য সমর্থন ছিল ActionBar। এটি পুরানো সংস্করণে ActionBarActivityপ্রথম সমর্থন করা হয়েছিল যা এখন অবচয় এবং এর সাথে প্রতিস্থাপিত হয়েছে AppCompatActivity। যেহেতু, এই উভয় শ্রেণিই FragmentActivityতারা হোস্টিংয়ের Fragmentপাশাপাশি সমর্থন করে ।
রবি থাপলিয়াল

উত্তর:


327

আমি ভেবেছিলাম ক্রিয়াকলাপ হ্রাস করা হয়েছে

না।

সুতরাং এপিআই লেভেল 22 (এপিআই লেভেল 15 বা 16 এর সর্বনিম্ন সমর্থন সহ) এর জন্য, উপাদানগুলি হোস্ট করার জন্য এবং উপাদানগুলির নিজের জন্য আমার ঠিক কী ব্যবহার করা উচিত? এই সবগুলির জন্য কোনও ব্যবহার রয়েছে, বা আমার এক বা দুটি প্রায় একচেটিয়াভাবে ব্যবহার করা উচিত?

Activityবেসলাইন। Activityপ্রত্যক্ষ বা পরোক্ষভাবে প্রতিটি ক্রিয়াকলাপ উত্তরাধিকার সূত্রে প্রাপ্ত ।

FragmentActivity পাওয়া টুকরো ব্যাকপোর্ট সাথে ব্যবহারের জন্য support-v4 এবং support-v13লাইব্রেরি। খণ্ডগুলির নেটিভ বাস্তবায়নটি এপিআই লেভেল ১১-এ যুক্ত করা হয়েছিল যা আপনার প্রস্তাবিত minSdkVersionমানগুলির চেয়ে কম । আপনি FragmentActivityযদি নেস্টেড টুকরা (অন্য একটি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টানতে পারেন না)

AppCompatActivity থেকে হয় appcompat-v7গ্রন্থাগারমূলত, এটি অ্যাকশন বারের ব্যাকপোর্ট সরবরাহ করে। যেহেতু নেটিভ অ্যাকশন বারটি এপিআই লেভেল 11-এ যুক্ত করা হয়েছিল, আপনার এটির দরকার নেই AppCompatActivity। যাইহোক, বর্তমান সংস্করণগুলি appcompat-v7অ্যাকশন বার এবং বিভিন্ন উইজেটের ক্ষেত্রে পদার্থ ডিজাইনের নান্দনিকতার সীমিত ব্যাকপোর্টও যুক্ত করে port appcompat-v7এই নির্দিষ্ট স্ট্যাক ওভারফ্লো উত্তরের সুযোগের বাইরেও ব্যবহার করার পক্ষে মতামত রয়েছে।

ActionBarActivityথেকে বেস ক্রিয়াকলাপের পুরানো নাম appcompat-v7। বিভিন্ন কারণে তারা নামটি পরিবর্তন করতে চেয়েছিল। কিছু তৃতীয় পক্ষের গ্রন্থাগার না থাকলে আপনি জোর দিয়ে জিদ ব্যবহার করছেনActionBarActivity আপনার পছন্দ AppCompatActivityকরা উচিত ActionBarActivity

সুতরাং, আপনার দেওয়া minSdkVersion 15-16 সীমাতে দেওয়া হয়েছে:

  • আপনি যদি ব্যাকপোর্টেড ম্যাটেরিয়াল ডিজাইনের চেহারা চান তবে ব্যবহার করুন AppCompatActivity

  • যদি না হয় তবে আপনি নেস্টেড টুকরো চান, ব্যবহার করুন FragmentActivity

  • যদি না হয়, ব্যবহার করুন Activity

মন্তব্য থেকে কেবল নোট হিসাবে যুক্ত করা: AppCompatActivityপ্রসারিত হয় FragmentActivity, সুতরাং যার যার বৈশিষ্ট্যগুলি ব্যবহার করা দরকার সেগুলি FragmentActivityব্যবহার করতে পারে AppCompatActivity


আমি যদি মেটেরিয়াল ডিজাইনের চেহারাটি ব্যবহার করতে চাই এবং নেস্টেড টুকরোও চাই? অ্যাপকম্প্যাটএটিভিটি ফ্র্যাগমেন্টএটিভিটি থেকে উত্তরাধিকার সূত্রে প্রাপ্ত?
অরকুন সেভসে

4
@ মিলোরাম্বলদী: হ্যাঁ, এর FragmentActivityপূর্বপুরুষ AppCompatActivity। যদিও আমি নেস্টেড টুকরাগুলি ব্যবহার করার প্রস্তাব দিই না, নেস্টেড টুকরোগুলি যে পরিমাণে কাজ করে, AppCompatActivityনেস্টেড টুকরো সমর্থন করে।
কমন্সওয়্যার

বিস্তারিত উত্তর @ কমন্সওয়্যার জন্য ধন্যবাদ। আপনি কি বলতে পারবেন কোন minSDK কেবলমাত্র নন-ব্যাকপোর্টেড ম্যাটেরিয়াল ডিজাইন Activityছাড়াই সর্বাধিক প্রাপ্তির জন্য ব্যবহার করতে অনুমতি দেবে support-v7? আমার লক্ষ্য কমপক্ষে 19 টার্গেট 25
জুগুটিয়ার

1
@ জাগুটিয়ার: ব্যবহারের জন্য আপনার 21 বা ততোধিক Theme.Materialপ্রয়োজন minSdkVersion
কমন্সওয়্যার

83

Activityঅন্যান্য সমস্ত ক্রিয়াকলাপের বেস শ্রেণি, আমি মনে করি না এটি অবমূল্যায়ন করা হবে। তাদের মধ্যে সম্পর্কটি হ'ল:

Activity<- FragmentActivity<-AppCompatActivity <-ActionBarActivity

'<-' অর্থ এখানে উত্তরাধিকার। রেফারেন্স বলেন ActionBarActivityনিন্দা করা হয়েছে, ব্যবহারAppCompatActivity পরিবর্তে।

সুতরাং মূলত, ব্যবহার AppCompatActivityকরা সর্বদা সঠিক পছন্দ। তাদের মধ্যে পার্থক্যগুলি হ'ল:

  • Activity মৌলিক এক।
  • উপর ভিত্তি করে Activity, FragmentActivityব্যবহার করার ক্ষমতা প্রদান করেFragment
  • উপর ভিত্তি করে FragmentActivity, AppCompatActivityবৈশিষ্ট্য সরবরাহ করে ActionBar

2
মার্জিত উত্তর।
এমকাজেম আখগারি

69

2019: ব্যবহার করুন AppCompatActivity

এই লেখার সময় (লিঙ্কটি এটি এখনও সত্য বলে নিশ্চিত করুন), অ্যান্ড্রয়েড ডকুমেন্টেশন ব্যবহার করার পরামর্শ দেয় recommendAppCompatActivity আপনি যদি কোনও অ্যাপ বার তবে তা ব্যবহারের ।

এটি দেওয়া যুক্তিযুক্ত:

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

এই কারণে, আপনার ক্রিয়াকলাপের অ্যাপ বারগুলি প্রয়োগ করতে আপনার সমর্থন লাইব্রেরির সরঞ্জামদণ্ডের ক্লাসটি ব্যবহার করা উচিত। সমর্থন লাইব্রেরির সরঞ্জামদণ্ডটি ব্যবহার করা আপনার ডিভাইসের বিস্তৃত পরিসীমা জুড়ে সামঞ্জস্যপূর্ণ আচরণ করবে তা নিশ্চিত করতে সহায়তা করে। উদাহরণস্বরূপ, সরঞ্জামদণ্ড উইজেট অ্যান্ড্রয়েড ২.১ (এপিআই স্তর)) বা তারপরে চলমান ডিভাইসগুলিতে একটি উপাদানের নকশার অভিজ্ঞতা সরবরাহ করে তবে ডিভাইস অ্যান্ড্রয়েড 5.0 (এপিআই স্তর 21) বা তারপরে না চালিয়ে নেটিভ অ্যাকশন বার উপাদান নকশা সমর্থন করে না।

একটি টুলবার যুক্ত করার জন্য সাধারণ দিকনির্দেশগুলি হ'ল

  1. ভি 7 অ্যাপকম্প্যাট সহায়তা লাইব্রেরি যুক্ত করুন
  2. আপনার সমস্ত ক্রিয়াকলাপ প্রসারিত করুন AppCompatActivity
  3. ম্যানিফেস্টে ঘোষণা করুন যে আপনি চান NoActionBar
  4. একটি যোগ করুন ToolBarপ্রতিটি কার্যকলাপ রয়েছে XML লেআউটে।
  5. পান ToolBarপ্রতিটি কার্যকলাপ এর onCreate

দেখুন ডকুমেন্টেশন দিকনির্দেশ আরো বিস্তারিত জানার জন্য। তারা বেশ স্পষ্ট এবং সহায়ক।


হাই @ সুরগচ, এর জন্য ধন্যবাদ বলুন আমি আজ একটি অ্যাপ তৈরি করছি যা কেবলমাত্র 21 পরে সমর্থন করে wards প্রকৃতপক্ষে, এটি ঘটে যাওয়ার সাথে সাথে আমি কখনই কোনও অ্যাকশন বার বা অ্যাপ বার চাই না (একটি ফুলস্ক্রিন অ্যাপ্লিকেশন এর বেশি)। স্টুডিও পরামর্শ দিচ্ছে (১ November নভেম্বর) আমি "পিছনের দিকের সামঞ্জস্যতা (অ্যাপকম্প্যাট)" ব্যবহার করতে পারি । আমার অন্ত্র প্রবৃত্তি অ্যাপকম্প্যাট ব্যবহার করবেন না। আপনার বিশেষজ্ঞের মতামত কি? আমি কেবল আপনাকে ধন্যবাদ জানাতে পারি, ধন্যবাদ।
ফ্যাটি

আমি বিশেষজ্ঞ নই তাই আপনাকে বিশেষজ্ঞের মতামত জানাতে পারি না, তবে ডকুমেন্টেশনটি যতটা সম্ভব ডিভাইসগুলিকে সমর্থন করার পরামর্শ দেয় যাতে আমি এটি করি। আমি আমার সমস্ত অ্যাপ্লিকেশন সহ অ্যাপকোম্প্যাট ব্যবহার করি এবং এটি এখনও পর্যন্ত ভাল কাজ করেছে। আমি মনে করি আপনি যদি সত্যই 21 পূর্বের সমর্থন করতে না চান তবে আপনি স্টুডিও পরামর্শটি উপেক্ষা করতে পারেন।
সুরগাচ

50

ন্যূনতম এপিআই স্তরের 15 এর জন্য আপনি ব্যবহার করতে চান AppCompatActivity। সুতরাং উদাহরণস্বরূপ, আপনার MainActivityদেখতে এইরকম হবে:

public class MainActivity extends AppCompatActivity {
    ....
    ....
}

এটি ব্যবহার করতে AppCompatActivity, নিশ্চিত হয়ে নিন যে আপনার কাছে গুগল সহায়তা লাইব্রেরি ডাউনলোড হয়েছে (আপনি এটি আপনার সরঞ্জাম -> অ্যান্ড্রয়েড -> এসডিকে পরিচালক হিসাবে দেখতে পারেন)। তারপরে আপনার অ্যাপ্লিকেশানের গ্রেডেল.বিল্ড ফাইলে গ্রেড নির্ভরতা অন্তর্ভুক্ত করুন:

compile 'com.android.support:appcompat-v7:22:2.0'

আপনি AppCompatএটিকে আপনার প্রধান হিসাবে ব্যবহার করতে পারেন Activityযা এরপরে খণ্ডগুলি বা অন্যান্য ক্রিয়াকলাপগুলি চালু করতে ব্যবহৃত হতে পারে (এটি আপনি কী ধরণের অ্যাপ তৈরি করছেন তার উপর নির্ভর করে)।

বিগনার্ড্যাঞ্চ বইটি একটি ভাল সংস্থান, তবে হ্যাঁ, এটি পুরানো। অ্যান্ড্রয়েড কীভাবে কাজ করে সে সম্পর্কে সাধারণ তথ্যের জন্য এটি পড়ুন তবে তারা নির্দিষ্ট ক্লাসগুলি আপ টু ডেট হওয়ার আশা করবেন না expect


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

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

: 3 আগস্ট পর্যন্ত BigNerdRanch তার বইয়ের একটি নতুন সংস্করণ রয়েছে amazon.com/Android-Programming-Nerd-Ranch-Guide/dp/0134171454/...
bryant1410

1
@ adao7000 সাথ যেখানে এটি উল্লেখ করেছে যে 15 বা ততোধিকের জন্য আপনি অ্যাপকোম্প্যাটএকটিভিটি ব্যবহার করতে পারেন - আমি ভেবেছিলাম v7 এ android.support.v7.app এর ন্যূনতম এসডিকে প্রয়োজন 7.।
কোডবেসড

1
@ কোডে বেসড android.support.v7 টি এপিআই স্তরের 9 থেকে শুরু করা যেতে পারে Source সূত্র: বিকাশকারী
অ্যান্ড্রয়েড

30

Activityবর্গ হল মৌলিক শ্রেণি। (আসল) এটি ফ্র্যাগমেন্ট ম্যানেজমেন্ট সমর্থন করে (যেহেতু API 11)। এর বিশুদ্ধ ব্যবহারের জন্য আর সুপারিশ করা হয় না কারণ এর বিশেষীকরণগুলি আরও ভাল।

ActionBarActivityকয়েক মিনিটের মধ্যে ছিল ভ্রমণ ক্লাসে প্রতিস্থাপন কারণ এটি একটি অ্যাপ্লিকেশানে ActionBar হ্যান্ডেল সহজ করে দিয়েছি।

AppCompatActivityহয় কারণ ActionBar আর উৎসাহিত করা হয় না যেতে করার নতুন পদ্ধতি এবং আপনি টুলবার পরিবর্তে (যে বর্তমানে ব্যবহার করা উচিত ActionBar প্রতিস্থাপন)। অ্যাপকম্প্যাটএটিভিটি ফ্র্যাগমেন্টএটিভিটি থেকে উত্তরাধিকার সূত্রে আসে তাই আপনার যদি প্রয়োজন খণ্ডগুলি পরিচালনা করতে হয় তবে (ফ্রেগমেন্ট ম্যানেজারের মাধ্যমে)। অ্যাপকম্প্যাটএটিভিটি কেবল 16+ নয় (যে কে বলেছে?) যে কোনও এপিআইয়ের জন্য। আপনি এটি আপনার গ্রেডল ফাইলটিতে যুক্ত করে ব্যবহার করতে পারেন । আমি এপিআই 10 এ এটি ব্যবহার করি এবং এটি নিখুঁতভাবে কাজ করে।compile 'com.android.support:appcompat-v7:24:2.0'


1
"অ্যাকশনবারটি এখন অবচয় করা হয়েছে" - অ্যাকশন বারটি হ্রাস করা হয় না। "পরিবর্তে আপনার সরঞ্জামদণ্ড ব্যবহার করা দরকার" - অ্যাপ্লিকেশনগুলিকে ব্যবহার করার প্রয়োজন নেই Toolbar
কমন্সওয়্যার

@ কমন্সওয়্যার ঠিক আছে, এটি কোনও অবহেলিত নয় তবে এর ব্যবহারটিকে আরও খাঁটি আকারে (পুরানোটি) উত্সাহ দেওয়া হয়নি। এখন, আপনি যদি আপনার অ্যাপ্লিকেশনটিতে অ্যাকশন বার রাখতে চান তবে আপনাকে এটি একটি সরঞ্জামদণ্ড ব্যবহার করে ম্যানুয়ালি যুক্ত করা উচিত।
জোয়াকুইন ইয়ারচুক

"এর ব্যবহারটিকে আরও বিশুদ্ধ আকারে আর উত্সাহিত করা হয় না" - আমি দস্তাবেজগুলিতে বা অফিসিয়াল ব্লগ পোস্টগুলিতে এমন কিছুই দেখিনি যা আপনার দাবিকে ন্যায্য করে তোলে। আপনার কি লিংক আছে?
কমন্সওয়্যার

@ কমন্সওয়্যার আপনি এখানে খ্যাতিমান এবং ঠিক বলেছেন। কেবলমাত্র উপাদান নকশা নির্দেশিকা একটি অ্যাকশন বার হিসাবে একটি সরঞ্জামদণ্ড ব্যবহার করার পরামর্শ দেয়। সম্ভবত আমার উত্তরটি মুছে ফেলা উচিত কারণ এটি যথাযথ নয়। ধন্যবাদ
জোয়াকুইন ইয়ারচুক

2
সাপোর্ট লাইব্রেরি সংস্করণ 26.0.0 (জুলাই 2017 এ প্রকাশিত) দিয়ে শুরু করে, সর্বনিম্ন সমর্থিত এপিআই স্তরটি সমস্ত সমর্থন লাইব্রেরি প্যাকেজগুলির জন্য অ্যান্ড্রয়েড 4.0 (এপিআই স্তর 14) এ পরিবর্তিত হয়েছে। উত্স: বিকাশকারী.অ্যান্ড্রয়েড
টপিক / লাইব্রিজি / সাপোর্ট-লাইবারি /

12

এখানে প্রচুর বিভ্রান্তি রয়েছে, বিশেষত আপনি যদি পুরানো উত্সগুলি পড়েন।

Activityমূলটি হ'ল , যা খণ্ডগুলি প্রদর্শন করতে পারে। আপনি অ্যান্ড্রয়েড সংস্করণ> 4 এ থাকলে এই সংমিশ্রণটি ব্যবহার করতে পারেন।

যাইহোক, একটি সমর্থন গ্রন্থাগার যা অন্য ক্লাসের আপনাকে উল্লেখ বোঝায় হল: FragmentActivity, ActionBarActivityএবং AppCompat। মূলত এগুলি অ্যান্ড্রয়েড সংস্করণ <4 এ টুকরো টুকরো সমর্থন করার জন্য ব্যবহৃত হয়েছিল, তবে বাস্তবে এগুলি অ্যান্ড্রয়েডের নতুন সংস্করণগুলি (উদাহরণস্বরূপ উপাদানগুলির নকশা) থেকে কার্যকারিতা ব্যাকপোর্ট করতে ব্যবহৃত হয়।

সর্বশেষতমটি হ'ল AppCompat, অন্য 2 টি বয়স্ক। আমি যে কৌশলটি ব্যবহার করি তা হ'ল সর্বদা ব্যবহার করা AppCompat, যাতে অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলি থেকে ব্যাকপোর্টগুলির ক্ষেত্রে অ্যাপ্লিকেশনটি প্রস্তুত থাকে।


ধন্যবাদ! ঠিক আছে, তাই আমি হোস্ট করার জন্য ক্রিয়াকলাপের জায়গায় অ্যাপকম্প্যাট ব্যবহার করতে পারি ... কী? অন্যান্য AppCompats হোস্ট করার জন্য? অথবা ফ্র্যাগমেন্টএটিভিটিস হোস্ট করার জন্য?
জেমসন

একটি ক্রিয়াকলাপ সাধারণত অন্যান্য খণ্ডগুলি হোস্ট করে ... এবং ফ্র্যাগমেন্টএকটিভিটি সম্পর্কে চিন্তা করবেন না, এটি একটি "বেস" শ্রেণীর আরও বেশি, যা অন্যান্য সমস্ত অভিনব XXXActivity থেকে প্রাপ্ত।
মেহেদি

তবে আমার অ্যাপকম্প্যাট হোস্টটি কোন শ্রেণীর উচিত? আর একটি অ্যাপক্যাম্প্যাট, না অন্য কিছু?
জেমসন

আপনার এখানে কেবল একটি জিনিস বুঝতে হবে: ক্রিয়াকলাপগুলি টুকরো টুকরো করে। ক্রিয়াকলাপগুলি উপায় দ্বারা অন্য কোনও কিছু দ্বারা হোস্ট করা হয় না, তাদের বাসা বাঁধতে পারে না। অ্যাপকম্প্যাট হ'ল অন্য ধরণের ক্রিয়াকলাপ। এর পরে আপনি যেতে পারেন এবং নীড় টুকরো টুকরো করতে পারেন, তবে এটি পরিচালনা করা জটিল হতে শুরু করে।
ফুল_সবুজ

1
না, আপনি অ্যাপকম্প্যাটটিকে একটি ক্রিয়াকলাপ হিসাবে ব্যবহার করেন এবং আপনি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে না।
ফুল_সবুজ

7

আপনার সম্পর্কে কথা যদি Activity, AppcompactActivity, ActionBarActivityইত্যাদি ইত্যাদি ..

বেস ক্লাসগুলি যা তারা প্রসারিত করছে সে সম্পর্কে আমাদের কথা বলতে হবে, প্রথমে আমাদের সুপার ক্লাসের শ্রেণিবিন্যাস বুঝতে হবে।

সমস্ত জিনিস কনটেক্সট থেকে শুরু হয়েছিল যা এই সমস্ত শ্রেণীর জন্য সুপার ক্লাস।

প্রসঙ্গটি একটি বিমূর্ত শ্রেণি যার বাস্তবায়ন অ্যান্ড্রয়েড সিস্টেম সরবরাহ করে। এটি অ্যাপ্লিকেশন-নির্দিষ্ট সংস্থান এবং ক্লাসগুলিতে অ্যাক্সেসের পাশাপাশি অ্যাপ্লিকেশন-স্তরের ক্রিয়াকলাপগুলির জন্য যেমন আপ-ক্রিয়াকলাপগুলি যেমন লঞ্চিং কার্যক্রম, সম্প্রচার এবং উদ্দেশ্যগুলি গ্রহণ ইত্যাদির জন্য আপ কলগুলি অনুমতি দেয় allows

Context দ্বারা অনুসরণ বা দ্বারা প্রসারিত হয় ContextWrapper

ContextWrapper একটি বর্গ যা প্রসারিত হয় কনটেক্সট যে বর্গ কেবল সব অন্য প্রসঙ্গ তার কল প্রতিনিধিদের। মূল প্রসঙ্গে পরিবর্তন না করে আচরণটি সংশোধন করতে সাবক্ল্যাস করা যেতে পারে।

এখন আমরা পৌঁছতে Activity

ভ্রমণ একটি বর্গ যা প্রসারিত করে ContextThemeWrapper যে একটি একক, ফোকাস জিনিস ব্যবহারকারী পারে। প্রায় সমস্ত ক্রিয়াকলাপ ব্যবহারকারীর সাথে যোগাযোগ করে, তাই ক্রিয়াকলাপ শ্রেণি আপনার জন্য উইন্ডো তৈরির যত্ন নেয়

শ্রেণীর নীচে প্রসারিত সীমাবদ্ধ তবে তারা অভ্যন্তরীণভাবে তাদের উত্সর্গকারী দ্বারা প্রসারিত এবং নির্দিষ্ট এপির জন্য সমর্থন সরবরাহ করে

SupportActivity একটি শ্রেণী যেটি ভ্রমণ প্রসারিত একসঙ্গে সামঞ্জস্য কার্যকারিতা রচনার জন্য একটি একটি বেস বর্গ হয়

BaseFragmentActivityApi14 একটি বর্গ যা প্রসারিত করে SupportActivity করে একটি বেজ ক্লাসের এটা বর্গ সীমিত থাকবে কিন্তু এটা দ্বারা প্রসারিত হয় BaseFragmentActivityApi16 কার্যকারিতা সমর্থন করার জন্য v14

BaseFragmentActivityApi16 একটি বর্গ যা প্রসারিত করে BaseFragmentActivityApi14 যে {@code জন্য একটি বেস ক্লাস হয় FragmentActivity } ব্যবহার পাবে v16 API গুলি। তবে এটি শ্রেণিবদ্ধও বটে তবে ভি 16 এর কার্যকারিতা সমর্থন করার জন্য এটি ফ্র্যাগমেন্টএটিভিটি দ্বারা প্রসারিত।

এখন ফ্রেগমেন্ট অ্যাক্টিভিটি

FragmentActivity একটি বর্গ যা প্রসারিত করে BaseFragmentActivityApi16 এবং যে সমর্থন ভিত্তিক অসম্পূর্ণ অংশ এবং লোডার API গুলি ব্যবহার করতে চায়।

নতুন প্ল্যাটফর্মের অন্তর্নির্মিত খণ্ড এবং লোডার সহায়তার বিপরীতে এই শ্রেণিটি ব্যবহার করার সময়, সেই বৈশিষ্ট্যগুলি অ্যাক্সেস করতে আপনাকে অবশ্যই যথাক্রমে getSupportFragmentManager()এবং getSupportLoaderManager()পদ্ধতিগুলি ব্যবহার করতে হবে ।

অ্যাকশনবার্টিভিটি সমর্থন লাইব্রেরির অংশ part পুরানো প্ল্যাটফর্মগুলিতে নতুন বৈশিষ্ট্য সরবরাহ করতে সহায়তা লাইব্রেরিগুলি ব্যবহৃত হয়। উদাহরণস্বরূপ, অ্যাকশনবারটি এপিআই 11-এ প্রবর্তিত হয়েছিল এবং এটি ডিফল্টরূপে ক্রিয়াকলাপের অংশ (আসলে থিমের উপর নির্ভর করে)। বিপরীতে পুরানো প্ল্যাটফর্মগুলিতে কোনও অ্যাকশনবার নেই । সুতরাং সমর্থন লাইব্রেরিতে ক্রিয়াকলাপের একটি ক্রিয়াকলাপ ( অ্যাকশনবার্টিভিটি ) যুক্ত করা হয় যা অ্যাকশনবারের কার্যকারিতা এবং ui সরবরাহ করে

2015 সালে ActionBarActivity সাপোর্ট লাইব্রেরির সংস্করণ 22.1.0 মধ্যে অসমর্থিত হয়েছে। পরিবর্তে AppCompatActivity ব্যবহার করা উচিত।

AppcompactActivity একটি বর্গ যা প্রসারিত করে FragmentActivity যে কার্যক্রম সমর্থন গ্রন্থাগার কর্ম বার বৈশিষ্ট্য ব্যবহার জন্য বেজ বর্গ।

আপনার ক্রিয়াকলাপের জন্য এই শ্রেণিটি বাড়িয়ে এবং ক্রিয়াকলাপের থিমটি বা কোনও অনুরূপ থিম সেট করে আপনি এপিআই স্তরের 7 বা ততোধিক চলমান চলাকালীন আপনার ক্রিয়াকলাপে অ্যাকশনবার যুক্ত করতে পারেন canTheme.AppCompat

এখানে

আমি এই দুটি এক উল্লেখ করুন , দুটি


3

যেহেতু এই নামটি অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলিতে পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে (বর্তমানে সর্বশেষতমটি AppCompatActivityতবে এটি সম্ভবত কোনও সময়ে পরিবর্তিত হবে), আমি বিশ্বাস করি যে ভাল জিনিস হ'ল এমন একটি বর্গ Activityযা প্রসারিত হয় AppCompatActivityএবং তারপরে আপনার সমস্ত ক্রিয়াকলাপ সেই থেকে প্রসারিত হয়। যদি আগামীকাল হয়, তারা AppCompatActivity2উদাহরণটির জন্য নামটি পরিবর্তন করে আপনাকে এটিকে কেবল এক জায়গায় বদলাতে হবে।


0

AppCompatActivity প্রসারিত FragmentActivity প্রসারিত BaseFragmentActivityApi16 প্রসারিত BaseFragmentActivityApi14 প্রসারিত SupportActivity প্রসারিত ভ্রমণ

তাই কার্যকলাপ সকলের চেয়ে দ্রুত এবং অ্যাপকোম্প্যাটঅ্যাক্টিভিটি সর্বোত্তম all

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.