Android флажок отмечен одной переменной - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть много флажок, и я сохранил в строке, если он отмечен следующим образом:

 String juice = "";

 if (apple.isChecked()) {
      juice = apple.getText().toString().trim() + " " + etiquetas;
 }
 if (orange.isChecked()) {
      juice = orange.getText().toString().trim() + " " + etiquetas;
 }

Но когда мне нужно в другой деятельности, установите флажок, idk, как проверить, потому что я сохранил в одном , Мне действительно нужно быть похожим на одну переменную, потому что это инструкции к экзамену. И это мой код для другой Деятельности;

Intent intent = getIntent();
if(intent != null){
     String juice_2 = (String) getIntent().getStringExtra("EXTRA_JUICE"); 
     //apple.setChecked();
}

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

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

И в месте назначения разделить строку на массив строки, основанные на символе ПРОБЕЛ, и затем установите значение checkBox, если этот массив содержит ваш указанный c сок.

в Деятельности A:

String juice = "";

if (apple.isChecked()) {
    juice = apple.getText().toString().trim() + " ";
}
if (orange.isChecked()) {
    juice = orange.getText().toString().trim() + " ";
}

// Going to Activity B
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("JUICE", juice);
startActivity(intent);

в Деятельности B:

if (getIntent() != null) {
    String juice = getIntent().getStringExtra("JUICE");
    if (juice != null) {
        String[] splittedJuice = juice.split(" ");
        ArrayList list = new ArrayList();
        // Convert array into a List
        Collections.addAll(list, oldLines);
        // Check if the list contains "orange"
        if (list1.contains("orange")) {
            orange.setChecked(true);
        }

        if (list1.contains("apple")) {
            apple.setChecked(true);
        }

    }
}

0 голосов
/ 23 апреля 2020

Для передачи данных из одного занятия в другое вы можете использовать Intent.putExtra(). Строка будет выглядеть примерно так:

intent.putExtra(LABEL, juice);

где: LABEL - это строка, которая позволяет второму действию найти вашу переменную, juice - ваша переменная.

Чтобы разрешить Проблема, вы можете использовать что-то вроде этого:

public class First extends AppCompatActivity {

private final static String LABEL = "juices";
String juice;
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first);

    final CheckBox apple = (CheckBox) findViewById(R.id.apple);
    Button nextIntent = (Button) findViewById(R.id.next);

    nextIntent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (apple.isChecked()) {
                juice = apple.getText().toString();
            }
            Intent intent = new Intent(getApplicationContext(), Second.class);
            intent.putExtra(LABEL, juice);
            startActivity(intent);
        }
    });
    }
}

Второе занятие:

public class Second extends AppCompatActivity {
    private final static String LABEL = "juices";

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first);

        Intent intent = getIntent();
        String dataReceived = intent.getStringExtra(LABEL);
        System.out.println("Your string: " + dataReceived);

    }
}

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

Если в первом упражнении много переменных, вы можете передать их в массив, отправить их другому действию (аналогичным образом) и итерация, чтобы установить / снять флажки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...