অ্যান্ড্রয়েডের মূল ক্রিয়াকলাপে ডেটা পাঠানো


294

আমার দুটি ক্রিয়াকলাপ রয়েছে: প্রধান ক্রিয়াকলাপ এবং শিশু ক্রিয়াকলাপ।
আমি যখন প্রধান ক্রিয়াকলাপে একটি বোতাম টিপই, তখন শিশু ক্রিয়াকলাপটি চালু হয়।

এখন আমি কিছু তথ্য মূল স্ক্রিনে ফেরত পাঠাতে চাই। আমি বান্ডিল ক্লাসটি ব্যবহার করেছি, তবে এটি কাজ করছে না। এটি কিছু রানটাইম ব্যতিক্রম ছোঁড়ে।

এটির জন্য কি কোন সমাধান আছে?



আর একটি কৌশল আপনার মূল কার্যকলাপে একটি অ্যারেলিস্ট সংজ্ঞায়িত করে এটি স্থিতিশীল করে তোলে যাতে আপনি এটি দ্বিতীয় ক্রিয়াকলাপে অ্যাক্সেস করতে পারেন তারপরে আপনি মূল ক্রিয়াকলাপে প্রেরণ করতে চান এমন ডেটা যুক্ত করুন তবে আপনি এটি মূল ক্রিয়ায় অ্যাক্সেস করতে পারবেন
অভিষেক যাদব

অভিষেক যাদব, যদি আপনার মূল ক্রিয়াকলাপটি (onDestroy () কলব্যাক) নষ্ট করে চলেছে what আমি মনে করি এটি খুব ভাল পরামর্শ নয়।
লিওন্টসেভ আন্তন

উত্তর:


471

পরিস্থিতিগুলির উপর নির্ভর করে আপনি যা চান তা অর্জনের কয়েকটি উপায় রয়েছে।

সর্বাধিক সাধারণ পরিস্থিতি (যা আপনার নিজের মতো লাগে) হ'ল যখন কোনও শিশু ক্রিয়াকলাপটি ব্যবহারকারীর ইনপুট পেতে ব্যবহৃত হয় - যেমন একটি তালিকা থেকে পরিচিতি চয়ন করা বা কোনও ডায়ালগ বাক্সে ডেটা প্রবেশ করা। এই ক্ষেত্রে আপনার ব্যবহার করা উচিতstartActivityForResult আপনার সন্তানের ক্রিয়াকলাপ চালু করতে আপনার করা ।

এটি ব্যবহার করে মূল ক্রিয়াকলাপে ডেটা ফেরত পাঠানোর জন্য একটি পাইপলাইন সরবরাহ করে setResult। সেটআরসল্ট পদ্ধতিটি একটি ফলাফল ফলাফল এবং একটি উদ্দীপনা গ্রহণ করে যা কলিং ক্রিয়াকলাপে ফিরে যায়।

Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
resultIntent.putExtra("some_key", "String data"); 
setResult(Activity.RESULT_OK, resultIntent);
finish();

কলিং ক্রিয়াকলাপের ওভাররাইডে ফিরে আসা ডেটা অ্যাক্সেস করতে onActivityResult। অনুরোধকড কলটিতে পাস করা পূর্ণসংখ্যার সাথে সম্পর্কিত startActivityForResult, যখন রেজাল্টকোড এবং ডেটা ইন্টেন্ট শিশু ক্রিয়াকলাপ থেকে ফিরে আসে।

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch(requestCode) {
    case (MY_CHILD_ACTIVITY) : {
      if (resultCode == Activity.RESULT_OK) {
        // TODO Extract the data returned from the child Activity.
        String returnValue = data.getStringExtra("some_key");
      }
      break;
    } 
  }
}

4
সম্পূর্ণতার জন্য একটি উল্লেখ করা উচিত কলটি শেষ করার জন্য সেরা স্থানটি কী () শেষ করতে হবে? এটি বিশেষজ্ঞদের কাছে স্পষ্ট হতে পারে তবে নতুন উত্সগুলি উল্লেখ না করে নতুনদের পক্ষে জানা ভাল।
ক্যালিফ

1
@ জেলমুডজাসার এটি নির্ধারণ করতে আমার কিছুটা সময় লাগল, তবে মূলত আপনি যখন নতুন ক্রিয়াকলাপটি ইন্টেন্ট দিয়ে শুরু করেন তখন আপনাকে startActivityForResultঠিক পরিবর্তে ফাংশনটি ব্যবহার করতে হবে startActivity। উদাহরণ startActivityForResult(myIntent, 2);যেখানে 2 ফলাফল ফলাফল হতে পারে , যা MY_CHILD_ACTIVITYউপরের স্যুইচ বিবৃতিতে স্থান নিতে পারে।
স্পটলাইট

যখন দ্বিতীয় ক্রিয়াকলাপ শেষ হয়ে যায় এবং প্রথম ক্রিয়াকলাপে ফিরে আসে তখন কীভাবে অনুরোধ কোডটি শেষ করবেন আগে দ্বিতীয় ক্রিয়াকলাপে সেট করবেন .... এটিকে প্রথম ক্রিয়াকলাপেঅ্যাক্টিভিটিস রেজাল্টে ব্যবহার করার জন্য
আহমাদউল্লাহ সৈকত

অভিপ্রায় কি বাধ্যতামূলক? আমার কাছে যদি ফেরত পাঠানোর মতো কিছু না থাকে তবে আমাকে কী ফেরত পাঠানোর খালি উদ্দেশ্য প্রয়োজন?
বাগুস আজি সান্টোসো

@ বাগুসজিজি সান্টোসো ইচ্ছাকৃত isচ্ছিক, কেবল যদি আপনার কাছে ফেরত পাঠানোর কিছু থাকে তবে প্রয়োজন।
নরেন্দ্র সিং

186

ক্রিয়াকলাপ 1 স্টার্টঅ্যাক্টিভিটি ফর রিসাল্ট ব্যবহার করে :

startActivityForResult(ActivityTwo, ActivityTwoRequestCode);

ক্রিয়াকলাপ 2 চালু করা হয়েছে এবং আপনি ক্রিয়াকলাপটি বন্ধ করতে, অপারেশনটি সম্পাদন করতে পারেন:

Intent output = new Intent();
output.putExtra(ActivityOne.Number1Code, num1);
output.putExtra(ActivityOne.Number2Code, num2);
setResult(RESULT_OK, output);
finish();

ক্রিয়াকলাপ 1 - পূর্ববর্তী ক্রিয়াকলাপ থেকে ফিরে আসা কার্যকলাপের ফলাফলটিতে কল করবে :

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ActivityTwoRequestCode && resultCode == RESULT_OK && data != null) {
        num1 = data.getIntExtra(Number1Code);
        num2 = data.getIntExtra(Number2Code);
    }
}

আপডেট: Seenu69 এর মন্তব্যের জবাব, ক্রিয়াকলাপ দুটি,

int result = Integer.parse(EditText1.getText().toString()) 
           + Integer.parse(EditText2.getText().toString());
output.putExtra(ActivityOne.KEY_RESULT, result);

তারপরে এক ক্রিয়াকলাপে,

int result = data.getExtra(KEY_RESULT);

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

2
দ্বিতীয় ক্রিয়াকলাপের ক্ষেত্রে, আপনি গণনা সম্পাদন করবেন এবং ফলাফলটি পুটেক্সট্রা () এর সাহায্যে সংগ্রহ করবেন। আমি আমার উত্তরটি উপরে সম্পাদনা করেছি
জিম্মিথি

67

ডেটা পিছনে পাঠানো হচ্ছে

এটি আমাকে প্রসঙ্গে জিনিসগুলি দেখতে সহায়তা করে। ডেটা ফেরত প্রেরণের জন্য এখানে একটি সম্পূর্ণ সাধারণ প্রকল্প। এক্সএমএল লেআউট ফাইল সরবরাহ করার চেয়ে এখানে একটি চিত্র।

এখানে চিত্র বর্ণনা লিখুন

প্রধান কাজ

  • startActivityForResultএটি একটি স্বেচ্ছাসেবী রেজাল্ট কোড সরবরাহ করে দ্বিতীয় ক্রিয়াকলাপটি শুরু করুন ।
  • ওভাররাইড onActivityResult। দ্বিতীয় ক্রিয়াকলাপ শেষ হলে এটি বলা হয়। আপনি অনুরোধ কোডটি পরীক্ষা করে নিশ্চিত করতে পারেন যে এটি আসলে দ্বিতীয় কার্যকলাপ Ac (আপনি একই মূল ক্রিয়াকলাপ থেকে একাধিক বিভিন্ন ক্রিয়াকলাপ শুরু করার সময় এটি কার্যকর হয়))
  • রিটার্ন থেকে আপনি যে ডেটা পেয়েছেন তা বের করুন Intent। কী-মান জোড়াটি ব্যবহার করে ডেটা বের করা হয়।

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private static final int SECOND_ACTIVITY_REQUEST_CODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // "Go to Second Activity" button click
    public void onButtonClick(View view) {

        // Start the SecondActivity
        Intent intent = new Intent(this, SecondActivity.class);
        startActivityForResult(intent, SECOND_ACTIVITY_REQUEST_CODE);
    }

    // This method is called when the second activity finishes
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Check that it is the SecondActivity with an OK result
        if (requestCode == SECOND_ACTIVITY_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {

                // Get String data from Intent
                String returnString = data.getStringExtra("keyName");

                // Set text view with string
                TextView textView = (TextView) findViewById(R.id.textView);
                textView.setText(returnString);
            }
        }
    }
}

দ্বিতীয় ক্রিয়াকলাপ

  • আপনি পূর্ববর্তী ক্রিয়াকলাপে যে ডেটাটি আবার পাঠাতে চান তাতে ডেটা রাখুন IntentIntentকী-মান জোড় ব্যবহার করে ডেটা সংরক্ষণ করা হয় ।
  • ফলাফল সেট করুন RESULT_OKএবং আপনার ডেটা ধারণ করে এমন অভিপ্রায় যুক্ত করুন।
  • finish()দ্বিতীয় ক্রিয়াকলাপ বন্ধ করার জন্য কল করুন ।

SecondActivity.java

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    // "Send text back" button click
    public void onButtonClick(View view) {

        // Get the text from the EditText
        EditText editText = (EditText) findViewById(R.id.editText);
        String stringToPassBack = editText.getText().toString();

        // Put the String to pass back into an Intent and close this activity
        Intent intent = new Intent();
        intent.putExtra("keyName", stringToPassBack);
        setResult(RESULT_OK, intent);
        finish();
    }
}

অন্যান্য নোট

  • আপনি যদি কোনও খণ্ডে থাকেন তবে এটি এর অর্থ জানবে না RESULT_OK। শুধু পুরো নাম ব্যবহার করে: Activity.RESULT_OK

আরো দেখুন


এটি খুব সুস্পষ্টভাবে লিখিত একটি স্পষ্ট ব্যাখ্যা। সাবাশ!
কিংসলে ইজাইক

29

ফার্স্টঅ্যাক্টিভিটি স্টার্টঅ্যাক্টিভিটি ফর রিসাল্ট ব্যবহার করে:

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent, int resultCode); // suppose resultCode == 2

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 2)
    {
        String message=data.getStringExtra("MESSAGE");
    }
}

সেকেন্ডঅ্যাক্টিভিটি কল সেটআরসাল্ট () অনক্লিক ইভেন্ট বা অনব্যাকপ্রেসড ()

Intent intent=new Intent();
intent.putExtra("MESSAGE",message);
setResult(Activity.RESULT_OK, intent);

এটি কি অনুরোধের কোড কোড?
ইঞ্জিনিয়ার সৈয়দ রওশন আলী

15

স্টার্টঅ্যাক্টিভিটি ফর রিসাল্ট () পদ্ধতি কলটি ব্যবহার করে শিশু ক্রিয়াকলাপের উদ্দেশ্যে কল করুন

এর উদাহরণ এখানে রয়েছে: http://developer.android.com/training/notepad/notepad-ex2.html

এবং এর "একটি স্ক্রীন থেকে ফলাফল ফেরত" এ: http://developer.android.com/guide/faq/commontasks.html#opennewscreen


হ্যাঁ, আমি সিব্রুলাকের সাথে একমত, ডক্সের লিঙ্কটি উত্তরের চেয়ে আরও বেশি সহায়ক ছিল।
জর্জি_

লিঙ্কগুলি এখন কিছু সাধারণ জিনিস দেখাচ্ছে। সামগ্রীটি পরিবর্তিত হতে পারে দয়া করে এটি আপডেট করুন বা সম্প্রদায়ের জন্য উত্তরটি সরিয়ে দিন
মনোরঞ্জন

7

আপনার আরও ভাল রেফারেন্সের জন্য আমি সাধারণ ডেমো ক্লাস তৈরি করেছি।

FirstActivity.java

 public class FirstActivity extends AppCompatActivity {

    private static final String TAG = FirstActivity.class.getSimpleName();
    private static final int REQUEST_CODE = 101;
    private Button btnMoveToNextScreen;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnMoveToNextScreen = (Button) findViewById(R.id.btnMoveToNext);
        btnMoveToNextScreen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mIntent = new Intent(FirstActivity.this, SecondActivity.class);
                startActivityForResult(mIntent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(resultCode == RESULT_OK){
            if(requestCode == REQUEST_CODE && data !=null) {
                String strMessage = data.getStringExtra("keyName");
                Log.i(TAG, "onActivityResult: message >>" + strMessage);
            }
        }

    }
}

এবং এখানে সেকেন্ডএকটিভিটি.জভা

public class SecondActivity extends AppCompatActivity {

    private static final String TAG = SecondActivity.class.getSimpleName();
    private Button btnMoveToPrevious;
    private EditText editText;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        editText = (EditText) findViewById(R.id.editText);

        btnMoveToPrevious = (Button) findViewById(R.id.btnMoveToPrevious);
        btnMoveToPrevious.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String message = editText.getEditableText().toString();

                Intent mIntent = new Intent();
                mIntent.putExtra("keyName", message);
                setResult(RESULT_OK, mIntent);
                finish();

            }
        });

    }
}

3
ভাল ব্যাখ্যা!
রাধে

5

প্রথম ক্রিয়াকলাপে আপনি ব্যবহার করে অভিপ্রায় পাঠাতে পারেন startActivityForResult()এবং তারপরে ব্যবহার শেষ করার পরে দ্বিতীয় ক্রিয়াকলাপ থেকে ফলাফল পেতে পারেন setResult

MainActivity.class

public class MainActivity extends AppCompatActivity {

    private static final int SECOND_ACTIVITY_RESULT_CODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // "Go to Second Activity" button click
    public void onButtonClick(View view) {

        // Start the SecondActivity
        Intent intent = new Intent(this, SecondActivity.class);
        // send intent for result 
        startActivityForResult(intent, SECOND_ACTIVITY_RESULT_CODE);
    }

    // This method is called when the second activity finishes
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // check that it is the SecondActivity with an OK result
        if (requestCode == SECOND_ACTIVITY_RESULT_CODE) {
            if (resultCode == RESULT_OK) {

                // get String data from Intent
                String returnString = data.getStringExtra("keyName");

                // set text view with string
                TextView textView = (TextView) findViewById(R.id.textView);
                textView.setText(returnString);
            }
        }
    }
}

SecondActivity.class

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    // "Send text back" button click
    public void onButtonClick(View view) {

        // get the text from the EditText
        EditText editText = (EditText) findViewById(R.id.editText);
        String stringToPassBack = editText.getText().toString();

        // put the String to pass back into an Intent and close this activity
        Intent intent = new Intent();
        intent.putExtra("keyName", stringToPassBack);
        setResult(RESULT_OK, intent);
        finish();
    }
}

1

এই সমস্ত উত্তরগুলি ডেটা প্রেরণের পরে আপনার দ্বিতীয় ক্রিয়াকলাপের দৃশ্যের ব্যাখ্যা দিচ্ছে।

তবে যদি আপনি দ্বিতীয় ক্রিয়াকলাপটি শেষ করতে না চান এবং ডেটা প্রথমে আবার পাঠাতে চান তবে তার জন্য আপনি ব্রডকাস্টারসিভার ব্যবহার করতে পারেন।

দ্বিতীয় ক্রিয়াকলাপে -

Intent intent = new Intent("data");
intent.putExtra("some_data", true);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

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

private BroadcastReceiver tempReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // do some action
    }
};

রিসিভারকে অনক্রিট () এ নিবন্ধন করুন -

 LocalBroadcastManager.getInstance(this).registerReceiver(tempReceiver,new IntentFilter("data"));

এটি অনড্রেস্ট্রয়ে () এ নিবন্ধভুক্ত করুন


0

আপনার পরিস্থিতির উপর নির্ভর করে ভাল হতে পারে কাঙ্ক্ষিত ফলাফল অর্জনের আর একটি উপায় হ'ল শ্রোতা ইন্টারফেস তৈরি করা।

প্যারামেন্ট ক্রিয়াকলাপটি এমন একটি ইন্টারফেস শুনতে শোনায় যা প্রয়োজনীয় ক্রিয়াকলাপটিকে প্যারামিটার হিসাবে পাস করার সময় সন্তানের ক্রিয়াকলাপ দ্বারা ট্রিগার হয় যা পরিস্থিতিগুলির অনুরূপ সেট তৈরি করতে পারে


-1

এটি করার কিছু উপায় রয়েছে। ১. উপরের উত্তরগুলিতে খুব ভালভাবে ব্যাখ্যা করা স্টার্টএটিভিটি ফর রিসাল্ট () ব্যবহার করে।

  1. আপনার "ইউটিলস" বর্গ বা আপনার নিজস্ব কোনও শ্রেণিতে স্থিতিশীল ভেরিয়েবল তৈরি করে। উদাহরণস্বরূপ, আমি অ্যাক্টিভিটিবি থেকে অ্যাক্টিভিএতে স্টুডেন্ট আইডিতে পাস করতে চাই my আমার অ্যাক্টিভিটিএটি অ্যাক্টিভিটি বি কল করছে irst তারপরে অ্যাক্টিভিটিবির ভিতরে স্টুডেন্ট আইড সেট করুন (এটি ইউটিলসক্লাসে একটি স্ট্যাটিক ফিল্ড)। এই Utils.STUDENT_ID = "1234" পছন্দ করুন; তারপরে অ্যাক্টিভিটিএতে ফিরে আসার সময় স্টুডেন্ট আইডিটি ব্যবহার করুন যা ইউটিলেস.এসটিইউডিআইআইডি-তে সংরক্ষিত আছে।

  2. আপনার অ্যাপ্লিকেশন ক্লাসে একটি গিটার এবং সেটার পদ্ধতি তৈরি করে।

এটার মত:

public class MyApplication extends Application {

    private static MyApplication instance = null;
    private String studentId="";

    public static MyApplication getInstance() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

    public void setStudentId(String studentID){
        this.studentId=studentID;
    }

    public String getStudentId(){
        return this.studentId;
    }
}

সুতরাং আপনি সম্পন্ন হয়েছে। আপনি যখন অ্যাক্টিভিবিতে থাকবেন এবং অ্যাক্টিভিটিএ-তে ফিরে আসার পরে কেবলমাত্র ডাটাটি সেট করুন।


-1

আমি মনে করি কেবলমাত্র একটি ছোট বিশদ যা উপরের উত্তরে অনুপস্থিত।

যদি আপনার সন্তানের ক্রিয়াকলাপটি একাধিক অভিভাবক ক্রিয়াকলাপ থেকে খোলা যেতে পারে setResultতবে আপনার ক্রিয়াকলাপটি খোলা হয়েছে startActivityবা এর উপর ভিত্তি করে আপনি কি করতে হবে কিনা তা পরীক্ষা করে দেখতে পারেন startActivityForResult। আপনি এটি ব্যবহার করে এটি অর্জন করতে পারেন getCallingActivity()। আরও তথ্য এখানে


-2

ভাগ করা পছন্দগুলি ব্যবহার করুন এবং আপনার ডেটা সংরক্ষণ করুন এবং অ্যাপ্লিকেশনটির যে কোনও জায়গা থেকে এটি অ্যাক্সেস করুন

এই মত তারিখ সংরক্ষণ করুন

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();

এবং এই জাতীয় তথ্য গ্রহণ

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    String savedPref = sharedPreferences.getString(key, "");
    mOutputView.setText(savedPref);

6
এটি আরও উপযুক্ত হবে যদি দ্বিতীয় ক্রিয়াকলাপটি অ্যাপ্লিকেশনটিতে স্থায়ী পরিবর্তন / সেটিং সেট করে।

আমি কি 2 টি পৃথক অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির মধ্যে ডেটা ভাগ করতে চাইলে এই কাজ করবে? লাইব্রেরি হিসাবে পরিচিত একজনকে?
জোয় রোহান

21
এটি SharedPreferences অপব্যবহার।
ইরান গোল্ডিন

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