কিভাবে বান্ডিল মাধ্যমে বস্তু প্রেরণ


119

আমার ক্লাসে একটি রেফারেন্স পাস করতে হবে যা আমার বান্ডেলের মাধ্যমে বেশিরভাগ প্রসেসিং করে।

সমস্যাটি হ'ল এর উদ্দেশ্য বা প্রসঙ্গের সাথে কোনও সম্পর্ক নেই এবং প্রচুর পরিমাণে অ-আদিম বস্তু রয়েছে। আমি কীভাবে ক্লাসটিকে একটি পার্সেবল / সিরিয়ালাইজেবলের মধ্যে প্যাকেজ করব এবং এটিকে পাস করব startActivityForResult?


2
"আমাকে ক্লাসে একটি রেফারেন্স পাস করতে হবে যা আমার বেশিরভাগ প্রসেসকে একটি বান্ডিল দিয়ে প্রসারণ করে" - কেন?
কমন্সওয়্যার

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

3
আপনি যদি একাধিক ক্রিয়াকলাপের উপরে কোনও অবজেক্টের একই উদাহরণটি নিয়ে কাজ করে থাকেন তবে আপনি সিঙ্গলটন প্যাটার্নটি বিবেচনা করতে পারেন । এখানে একটি ভাল টিউটোরিয়াল আছে
sotrh

উত্তর:


55

কোন পথটি অবলম্বন করা হবে তা নির্ধারণের জন্য কমন্সওয়্যারের কেবল "কেন" এর মূল প্রশ্নের উত্তর দেওয়া দরকার না, তবে "কী"? আপনি কি এটা পাস?

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

1) আপনি অবজেক্টটিকে তার গঠনমূলক ডেটা ভেঙে ফেলতে পারেন, এবং অন্য প্রান্তে যদি একই ধরণের অবজেক্টের জ্ঞান থাকে তবে এটি সিরিয়ালযুক্ত ডেটা থেকে ক্লোন একত্রিত করতে পারে। সাধারণত বেশিরভাগ প্রকারেরই বান্ডিলগুলির মধ্যে দিয়ে যায়।

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

3) আপনি কোনও ম্যাজিক হ্যান্ডেল পাস করতে পারেন, যেমন কোনও ফাইল বর্ণনাকারী বা নির্দিষ্ট ওএস / প্ল্যাটফর্মের বিষয়গুলির জন্য উল্লেখ, এবং আপনি যদি সঠিক পতাকাগুলি সেট করেন তবে বাইন্ডার প্রাপকের জন্য একই উত্সকে নির্দেশ করে একটি ক্লোন তৈরি করবে, যা আসলে ব্যবহার করা যেতে পারে অন্য প্রান্ত। তবে এটি কেবল খুব কয়েকটি ধরণের অবজেক্টের জন্যই কাজ করে।

সম্ভবত, আপনি হয় আপনার ক্লাসটি পাস করছেন ঠিক যাতে অন্য প্রান্তটি এটির উপর নজর রাখতে পারে এবং আপনাকে এটি পরে আপনাকে দিতে পারে, বা আপনি এমন একটি প্রসঙ্গে চলে যাচ্ছেন যেখানে ক্রমিক উপাদানযুক্ত ডেটা থেকে ক্লোন তৈরি করা যেতে পারে ... অন্যথায় আপনি এমন কিছু করার চেষ্টা করছেন যা কেবল কাজ করছে না এবং আপনাকে পুরো পদ্ধতির পুনর্বিবেচনা করতে হবে।


1
ট্যুর জবাবের জন্য ধন্যবাদ। আপনার অধিকার, আমাকে যা করতে হবে তা হ'ল আমার নতুন ক্রিয়াকলাপের জন্য কেবলমাত্র বস্তুর তালিকার একটি রেফারেন্স সরবরাহ করা। নতুন ক্রিয়াকলাপ তালিকা থেকে কিছু ডেটা নেবে এবং একটি নির্বাচনযোগ্য তালিকাভিউ প্রদর্শন করবে। অনসलेक्ट, ক্রিয়াকলাপটি হোস্ট ক্রিয়াকলাপে ফলাফল (ক্লিকের সাথে সম্পর্কিত কিছু তথ্য) ফিরিয়ে দেবে। যদি আমি সঠিকভাবে বুঝতে পারি তবে আমি বিশ্বাস করি যে আপনার বিকল্প 2 এটি যথাযথভাবে পরিচালনা করে; আমি এই অস্বচ্ছ হ্যান্ডেলটি কীভাবে পাব?
আহহদার

আপনার অন্যান্য ক্রিয়াকলাপটি প্রদর্শনের জন্য অস্বচ্ছ বস্তু থেকে কোনও ডেটা বের করতে পারে না। আপনি সম্ভবত যা করতে চান সেটি হ'ল কোনও সমর্থিত ধরণের কিছু সারোগেট অবজেক্ট তৈরি করা এবং পাস করা যাতে এতে প্রদর্শিত তথ্যের অনুলিপি থাকে।
ক্রিস স্ট্রাটন

158

আপনি কোনও বস্তুকে একটি JSONObject এ রূপান্তর করতে এবং এটি বান্ডেলে পাস করতে গসন ব্যবহার করতে পারেন। এটি করার জন্য আমার কাছে সবচেয়ে মার্জিত উপায় ছিল। এটি কার্য সম্পাদনকে কীভাবে প্রভাবিত করে তা আমি পরীক্ষা করে দেখিনি।

প্রাথমিক ক্রিয়াকলাপে

Intent activity = new Intent(MyActivity.this,NextActivity.class);
activity.putExtra("myObject", new Gson().toJson(myobject));
startActivity(activity);

নেক্সট ক্রিয়াকলাপে

String jsonMyObject;
Bundle extras = getIntent().getExtras();
if (extras != null) {
   jsonMyObject = extras.getString("myObject");
}
MyObject myObject = new Gson().fromJson(jsonMyObject, MyObject.class);

3
যেহেতু এটি ক্রিয়াকলাপগুলির মধ্যে স্টাফ পাস করার বিষয় এটি অ্যাপের সামগ্রিক পারফরম্যান্সের উপর দুর্দান্ত প্রভাব ফেলতে প্রায়শই ঘটে না। এটি বলা হচ্ছে যে আমি সন্দেহ করি এটি আসল পোস্টের ডেটা ম্যানেজারকে সিরিয়ালকরণে কাজ করবে কারণ এটির মতো মনে হচ্ছে এটির মধ্যে সকেট সংযোগ এবং অন্যান্য অনুরূপ ক্লাস রয়েছে।
britzl

4
এছাড়াও গুগল সিরিয়ালাইজের পরিবর্তে এই সমাধানটির পরামর্শ দেয়: এই ডক পৃষ্ঠার
টেকনাইকুইস্ট

3
সতর্কতার শব্দ হিসাবে, আমি এই কৌশলটি কিছু সময়ের জন্য অনুসরণ করেছি তবে আপনি স্ট্রিং হিসাবে কী পাস করতে পারবেন তার একটি স্মৃতি সীমা রয়েছে তাই নিশ্চিত হয়ে নিন যে আপনার ডেটা খুব বড় নয়।
jiduvah

আপনার প্রকল্পে কীভাবে গসন সমর্থন যুক্ত করবেন তা শিখতে ব্লগ.মাদাদিপুয়া.কম / ২০১/201 / ০৯ / ২১ / ২ দেখুন ।
geekQ

স্মার্ট সমাধান, টুপি আপনি বন্ধ!
রোহিত মান্দিওয়াল

20

Parcelable ইন্টারফেস একটি অভিপ্রায় সঙ্গে একটি বস্তু পাস করার জন্য একটি ভাল উপায়।

আমি কীভাবে আমার কাস্টম অবজেক্টগুলিকে পার্সেবল করতে পারি? পার্সেবলকে কীভাবে ব্যবহার করবেন সে সম্পর্কে একটি দুর্দান্ত উত্তর answer

অফিসিয়াল গুগল ডক্সেও একটি উদাহরণ অন্তর্ভুক্ত রয়েছে


1
অথবা এগুলি পাশাপাশি সিরিয়ালযোগ্যও হতে পারে।
জেফ্রি ব্লাটম্যান

1
কিন্তু যথেষ্ট পারফরম্যান্স 10x হ্রাস !! এই বেঞ্চমার্কটি দেখুন: ডেভেলপারফিল.
com

2
+1 @ মাতির মন্তব্য, যদিও এটি কোনও একক বস্তুর জন্য প্রয়োগ করা হলে প্রসঙ্গে 10x এ রাখতে 1 এমএসের সমতুল্য। সুতরাং সম্ভবত এটি শোনা হিসাবে খারাপ না।
পিনোয়ইড

1
একমত। সমস্যাটি যখন আপনি সংগ্রহগুলি নিয়ে কাজ করেন, আপনি যদি একটি রেস্ট এপিআই থেকে সংস্থান পেয়ে থাকেন তবে এটি খুব সাধারণ ব্যবহারের ক্ষেত্রে। তবে একটি একক বস্তুর জন্য, কিছু কুখ্যাত হওয়া উচিত নয়। যাইহোক, সমস্ত বয়লারপ্লেট কোড যদি আপনার পথে কিছু পেতে থাকে তবে আপনি এই লিবটি চেষ্টা করতে পারেন যা আপনাকে তৈরি করে: github.com/johncarl81/parceler । সত্যিই দুর্দান্ত পন্থা!
সাইয়ানকোডার

ভাঙা লিংক: 404 (পাওয়া যায়নি)
গালাল

14

আপনি বিশ্বব্যাপী প্রয়োগের স্থিতি ব্যবহার করতে পারেন ।

হালনাগাদ:

কাস্টমাইজ করুন এবং তারপরে এটি আপনার AndroidManLive.xML এ যুক্ত করুন:

<application android:label="@string/app_name" android:debuggable="true" android:name=".CustomApplication"

এবং তারপরে আপনার প্রোজেক্টে একটি ক্লাস করুন:

package com.example;

import android.app.Application;

public class CustomApplication extends Application {
    public int someVariable = -1;
}

এবং যেহেতু " এটি কোনও ক্রিয়াকলাপ বা পরিষেবা থেকে get অ্যাপ্লিকেশন () এর মাধ্যমে অ্যাক্সেস করা যায় ", আপনি এটি ব্যবহার করুন:

CustomApplication application = (CustomApplication)getApplication();
application.someVariable = 123; 

আশা করি এইটি কাজ করবে.


1
উত্তরের জন্য ধন্যবাদ, কিন্তু কিভাবে?
আহহদার

আমি বিশ্বাস করি আপনি কেবল সাবক্লাস অ্যাপ্লিকেশন এবং তারপরে আপনার পছন্দসই কিছু সংরক্ষণ করতে পারবেন। আপনার প্রয়োজনীয় এক্সএমএল পরিবর্তনগুলি উপরের লিঙ্কে উল্লেখ করা হয়েছে।
মার্ক স্টোর

9
সাধারণ ডিজাইনের অধ্যক্ষ হিসাবে, যদি আপনার সত্যিই প্রয়োজন না হয় তবে গ্লোবালগুলি এড়ানো ভাল ধারণা। এই ক্ষেত্রে ভাল বিকল্প আছে।
dhaag23

ঠিক আছে, আমি মনে করি আপনি যা বলছেন তা পেয়েছি। কেবল অ্যাপ্লিকেশনটি প্রসারিত করুন এবং অবজেক্টটি যে পাস করার প্রয়োজন তা ধারণ করে একটি ভেরিয়েবলের মধ্যে ফেলে দিন; আমি রেফারেন্স পৃষ্ঠাটি পর্যালোচনা করেছি এবং প্রয়োজনীয় এক্সএমএল পরিবর্তনগুলি দেখিনি।
এহোদার

আমি এটি একটি উত্তর হিসাবে লিখতে চেয়েছিলেন। এটি অবশ্যই এটির অন্যতম উপায়। তবে মনে রাখবেন যে এই জিনিসগুলি স্মৃতিতে রয়েছেন যদি না আপনি সেগুলি ডি-রেফ্রেস করেন (বা অ্যাপের প্রসঙ্গটি ধ্বংস হয়ে যায়) এবং আপনার যখন প্রয়োজন হয় না তখন স্থান দখল করতে পারে।
ইগোর Čordaš

12

আপনি নিজের বস্তুগুলিকে সিরিয়ালাইজেবলও করতে পারেন এবং বান্ডিলের getSerializable এবং putSerializable পদ্ধতি ব্যবহার করতে পারেন ।


1
আমি এটি চেষ্টা করেছিলাম এবং দ্রুত বুঝতে পেরেছিলাম এটি অযৌক্তিক হবে। আমি মনে করি না উত্তীর্ণ শ্রেণিতে (থ্রেড) সঞ্চিত বেশিরভাগ অবজেক্ট সিরিয়ালযোগ্য। :) ধন্যবাদ যদিও.
আহহদার

10

সম্ভাব্য সমাধান:

Bundle bundle = new Bundle();
bundle.putSerializable("key", new CustomObject());

ক্লাস কাস্টমবজেক্ট:

class CustomObject implements Serializable{
 private SubCustomObject1 sc1;
 private SubCustomObject2 sc2;
}

সাবকাস্টম অবজেক্টস:

class SubCustomObject1 implements Serializable{ }

class SubCustomObject2  implements Serializable{ }

7

বান্ডেলের মাধ্যমে অবজেক্টগুলি প্রেরণের আরও একটি উপায় হ'ল নমুনা কোড ব্যবহার করেbundle.putByteArray

public class DataBean implements Serializable {
private Date currentTime;

public setDate() {
    currentTime = Calendar.getInstance().getTime();
 }

public Date getCurrentTime() {
    return currentTime;
 }
}

ডেটাবিনের অবজেক্টটি বান্ডলে রাখুন:

class FirstClass{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Your code...

//When you want to start new Activity...
Intent dataIntent =new Intent(FirstClass.this, SecondClass.class);
            Bundle dataBundle=new Bundle();
            DataBean dataObj=new DataBean();
            dataObj.setDate();
            try {
                dataBundle.putByteArray("Obj_byte_array", object2Bytes(dataObj));

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            }

            dataIntent.putExtras(dataBundle);

            startActivity(dataIntent);
}

বাইট অ্যারেগুলিতে বস্তু রূপান্তর করা

/**
 * Converting objects to byte arrays
 */
static public byte[] object2Bytes( Object o ) throws IOException {
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      ObjectOutputStream oos = new ObjectOutputStream( baos );
      oos.writeObject( o );
      return baos.toByteArray();
    }

বান্ডেল থেকে বস্তুটি ফিরে পান:

class SecondClass{
DataBean dataBean;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Your code...

//Get Info from Bundle...
    Bundle infoBundle=getIntent().getExtras();
    try {
        dataBean = (DataBean)bytes2Object(infoBundle.getByteArray("Obj_byte_array"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

বাইট অ্যারে থেকে জিনিসগুলি পাওয়ার পদ্ধতি:

/**
 * Converting byte arrays to objects
 */
static public Object bytes2Object( byte raw[] )
        throws IOException, ClassNotFoundException {
      ByteArrayInputStream bais = new ByteArrayInputStream( raw );
      ObjectInputStream ois = new ObjectInputStream( bais );
      Object o = ois.readObject();
      return o;
    }

আশা করি এটি অন্যান্য বন্ধুদের সহায়তা করবে।


কোডটি দেখতে এটিকে মসৃণ এবং সহজ দেখাচ্ছে। তবে আমি অনুভব করি যে কেন SDK অবজেক্টগুলি পাস করার জন্য এই জাতীয় কিছু দেয় না। আপনি কি আমাকে এই সমাধান সম্পর্কে আরও কিছু বলতে পারেন?
মারিও লেনসি

3
সমস্ত কোডের জন্য মোটেই দরকার নেই! বান্ডেল.পুটসিরাইজিয়েবল (অবজেক্টস-ইম্পিমেন্টিংসরিজাইজিয়েবল) ব্যবহার করুন - এটি আপনার এখানে আবার বাস্তবায়ন করছে তার নীচে করে ...
রিসাদিনহা

3

1.এ খুব প্রত্যক্ষ এবং সহজেই ব্যবহারযোগ্য উদাহরণ, সিরিয়ালাইজিবল প্রয়োগে পাস করার উদ্দেশ্যে বস্তু তৈরি করুন।

class Object implements Serializable{
    String firstName;
   String lastName;
}

2. বান্ডিল মধ্যে বস্তু পাস

Bundle bundle = new Bundle();
Object Object = new Object();
bundle.putSerializable("object", object);

3. বান্ডেল থেকে সিরিয়ালিজেবল হিসাবে পাস করা বস্তুটি তারপরে অবজেক্টে কাস্ট করুন।

Object object = (Object) getArguments().getSerializable("object");

0

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

আবেদন

প্রথমটি হ'ল অ্যাপ্লিকেশন , কারণ এটি এখানে উত্তর সম্পর্কে সর্বাধিক কথিত। অ্যাপ্লিকেশন হ'ল সত্তা রাখার জন্য একটি ভাল অবজেক্ট যা প্রসঙ্গে একটি রেফারেন্স প্রয়োজন। একটি `সার্ভারসকেট` নিঃসন্দেহে একটি প্রসঙ্গের প্রয়োজন হবে (ফাইল I / o বা সাধারণ` listAdapter` আপডেটের জন্য)। আমি ব্যক্তিগতভাবে এই পথটিকে পছন্দ করি। আমি অ্যাপ্লিকেশনগুলি পছন্দ করি, সেগুলি প্রসঙ্গ পুনরুদ্ধারের জন্য দরকারী (কারণ এগুলি স্থির করা যেতে পারে এবং মেমরি ফুটো হওয়ার কারণ নাও হতে পারে) এবং একটি সরল জীবনচক্র রয়েছে।

সেবা

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

এটি উভয়েরই সম্পূর্ণ বিবরণ ছিল না, তবে যারা আরও তদন্ত করতে চান তাদের জন্য আমি ডক্সের লিঙ্কগুলি রেখে দিয়েছি। Serviceআমার প্রয়োজনের জন্য সামগ্রিকভাবে সর্বোত্তম - আমার এসপিপি ডিভাইসে সার্ভারসকেট চালানো।


0

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

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


1
ঠিক আছে, তারিখের মতো কিছু দিয়ে আপনি কেবলমাত্র দীর্ঘ মানটি পাস করতে পারেন। তবে, বাকিটা ভাল লাগছে। ধন্যবাদ।
আহোদার

0

বান্ডেল ব্যবহার করে বস্তুটি পাস করার আর একটি সহজ উপায়:

  • শ্রেণীর অবজেক্টে, একটি কী সহ একটি স্ট্যাটিক তালিকা বা অন্য ডেটা কাঠামো তৈরি করুন
  • আপনি যখন বস্তুটি তৈরি করেন, তখন কী / (ডাটাবেসটি তৈরি করার সময় লম্বা টাইমস্ট্যাম্প) সহ তথ্য / তালিকা কাঠামোতে রেখে দিন
  • তালিকা থেকে অবজেক্টটি পেতে স্ট্যাটিক গেটোবজেক্ট (দীর্ঘ কী) তৈরি করুন
  • বান্ডলে কীটি পাস করুন, যাতে আপনি কোডের অন্য একটি বিন্দু থেকে পরে বিষয়টি পেতে পারেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.