Передача информации между действиями - PullRequest
0 голосов
/ 26 декабря 2018

Я делаю проект, в котором мне нужно запрограммировать шагомер.Шагомер будет работать с помощью кнопки, и вы должны указать длину ваших шагов.Я сделал основной вид деятельности, который позволяет вам выбирать между анонимным и другим, который позволяет вам зарегистрироваться.Приложение работает, когда я регистрируюсь или анонимно, и длина шага хорошо передается третьему действию, где вы можете нажать кнопку и увеличить количество выполненных шагов и счетчиков.В этом упражнении есть еще одна кнопка для настройки длины ваших шагов, и я хочу передать всю информацию анонимному действию, чтобы изменить только длину шагов, и я передаю всю информацию.Я использовал метод putExtra () и getIntent (). GetExtra (). GetString (), но работает только от основного действия до регистрации / анонимного действия и затем до действия шагомера, но когда я хочу настроить длинушагов остановка приложений.

Это мой код анонимного действия:

if(this.getIntent().hasExtra("name")){
        names=this.getIntent().getExtras().getString("name");
    }else{
        names="";
    }

    if(this.getIntent().hasExtra("user")){
        userName=this.getIntent().getExtras().getString("user");
    }else{
        userName="";
    }

    if(this.getIntent().hasExtra("pass")){
        password=this.getIntent().getExtras().getString("pass");
    }else{
        password="";
    }

    if(this.getIntent().hasExtra("feetBefore")){
        footBefore=this.getIntent().getExtras().getString("feetBefore");
    }else{
        footBefore="0";
    }

    if(this.getIntent().hasExtra("steps")){
        stepsDone=this.getIntent().getExtras().getString("steps");
    }else{
        stepsDone="0";
    }


    Button continueBtn = findViewById(R.id.continueAnonymous);
    foot =  findViewById(R.id.lengthFeetAnonymous);

    continueBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String footSize = String.valueOf(foot.getText());
            if(!footSize.equals("")) {
                Intent mainAnonymous = new Intent(getApplicationContext(), Main5Activity.class);
                mainAnonymous.putExtra("name", names);
                mainAnonymous.putExtra("user", userName);
                mainAnonymous.putExtra("pass", password);
                mainAnonymous.putExtra("feet", footSize);
                mainAnonymous.putExtra("steps", stepsDone);
                mainAnonymous.putExtra("feetBefore", footBefore);
                startActivity(mainAnonymous);
                finish() ;
            }else{
                Toast.makeText(Main4Activity.this, "You have to complete all the backets.",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });

Это код моего шага активности:

Bundle parameters = this.getIntent().getExtras();
    if(parameters != null){
        name = parameters.getString("name");
        username = parameters.getString("user");
        password = parameters.getString("pass");
        String foot = parameters.getString("feet");
        String footBefore = parameters.getString("feetBefore");
        String stepsDone = parameters.getString("steps");
        if(stepsDone!=null) cont = Integer.parseInt(stepsDone);
        else cont =0;
        if(footBefore!=null)feetBefore = Integer.parseInt(footBefore);
        else feetBefore =0;
        if(foot !=null)feet = Float.parseFloat(foot)/100;
        else feet = (float) 0.43;
        cont2 = cont*feetBefore;
    }else {
        name = "";
        username = "";
        password = "";
        feet = (float) 0.43;
    }

    increase = findViewById(R.id.increaseStep);
    configuration = findViewById(R.id.confBtn);
    saveMain = findViewById(R.id.saveBtnMain);
    resume = findViewById(R.id.resumBtn);

    final TextView steps = findViewById(R.id.stepCounter);
    final TextView km = findViewById(R.id.kilometerCounter);
    steps.setText(String.format(Locale.ENGLISH,"%d Steps",cont));
    String aux =String.format(Locale.ENGLISH,"%.2f Meters", cont2);
    km.setText(aux);

    increase.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            cont++;
            steps.setText(String.format(Locale.ENGLISH,"%d Steps",cont));
            cont2 += feet;
            String aux =String.format(Locale.ENGLISH,"%.2f Meters", cont2);
            km.setText(aux);
        }
    });

    configuration.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent conf = new Intent(getApplicationContext(), Main4Activity.class);
            conf.putExtra("name", name);
            conf.putExtra("user", username);
            conf.putExtra("pass", password);
            String aux2 = String.valueOf(cont);
            conf.putExtra("steps", aux2);
            float aux4 =feet*100;
            String aux3 = String.valueOf(aux4);
            conf.putExtra("feetBefore", aux3);
            startActivity(conf);
            finish() ;
        }
    });
}

Iначал учить андроид вчера так что не знаю что делаю не так.Если вы можете мне помочь, я бы оценил это.Кроме того, я думаю, что это что-то о комплектации.

1 Ответ

0 голосов
/ 26 декабря 2018

Добавьте все данные в пакет и проверьте, только если пакет! = Null - Милан Пансурия

Я не знаю разницы между использованием пакета для передачи всех данных и putExtra для моих намерений, но этоработает для меня.Спасибо Милан Пансурия.

...