Перемещение между двумя действиями, включая отправку и получение данных, без потери данных - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь разработать приложение с двумя действиями. После открытия приложение в основной активности пользователя будет вводить некоторое число и выполнять некоторые общие математические вычисления (например, Добавить, умножить и т. Д. c), нажав кнопку. Затем для другого определенного вычисления c пользователь перейдет ко второму виду деятельности (FabricCost), нажав кнопку. Во втором упражнении пользователь выполнит некоторые вычисления и получит результат. Затем пользователь отправит этот результат в основное действие, нажав кнопку. Но проблема в том, что после отправки этого результата, когда пользователь возвращается к основному действию, все предыдущие вычисления основного действия уже потеряны. Также, когда пользователь снова возвращается ко 2-му действию, нажимая кнопку, результата также не остается, все теряется. Я хочу сохранить весь пользовательский ввод и данные такими, какие они есть во всех действиях. Я пытался с "onSaveInstanceState", но не работает. Пожалуйста, помогите мне.

код, по которому происходит переход ко 2-му занятию из основного действия

btnfabrateperkg.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick (View v) {

                Intent btnfabrateperkg = new Intent (MainActivity.this, FabricCost.class);
                startActivity(btnfabrateperkg);

код, по которому отправляются данные к основному виду деятельности из 2-го занятия

btnsentresult.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick (View v) {

                String stetfabriccostperkg = etfabriccostperkg.getText().toString();

                Intent btnsentresult = new Intent (FabricCost.this, MainActivity.class);

                btnsentresult.putExtra( "etfabriccostperkg",stetfabriccostperkg);

                startActivity(btnsentresult);

код, по которому осуществляется основное действие получение результата от 2-го действия

etfabrate.setText(getIntent().getStringExtra( "etfabriccostperkg"));

Я пытался использовать "onSaveInstanceState" в основном упражнении, но не сработало, код как показано ниже

@Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {

        savedInstanceState.putDouble(etbl.getText().toString(), 1.11);

        super.onSaveInstanceState(savedInstanceState);


    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState){

        super.onRestoreInstanceState(savedInstanceState);

        if (savedInstanceState == null) return;

            double myDouble = savedInstanceState.getDouble(etbl.getText().toString());

        }

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете выполнить следующие шаги, чтобы достичь результата. Вы должны передавать значение каждый раз от деятельности к другой деятельности.

Step1 Переход ко 2-му занятию из основного занятия

String stetfabriccostperkg = etfabriccostperkg.getText().toString();
Intent intent = new Intent (FabricCost.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("myobjects", stetfabriccostperkg);
intent.putExtras(bundle);
startActivityForResult(intent, REQUEST_RESULT);

Step2 Сохранение данных в основном задании при выполнении второго занятия

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                    if (requestCode == REQUEST_RESULT) {
                        // make use of "data" = profit
                        if (resultCode == Activity.RESULT_OK) {
                            Bundle b = data.getExtras();
                            if (b != null) {
                            String str = b.getString("myobject");
                         }
                        } else if (resultCode == 0) {
                            //Write your code if there's no result
                            System.out.println("RESULT CANCELLED");
                        }
                    }
                }

Step3 2-е мероприятие onCreate добавить ниже строка

 Intent intent = this.getIntent();
 Bundle bundle = intent.getExtras();
 String str =  bundle.getString("myobjects");

Step4 Переход к основному виду деятельности из второго занятия

Intent intent = new Intent();
intent.putExtra("myobject", str); //str is result to pass Main Activity
setResult(RESULT_OK, intent);
finish();
...